1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-05-02 22:17:10 +08:00
Jonathan Dreyer 46aadcfd9d
NOISSUE - Adding subtopics filtering in writer services (#1072)
* Add feature of filtering by subtopics in writer

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Fix mistake

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Refactoring writer sevices

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Rename variables related to filter (channels & subtopics)

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Set default value of filtering when configuration file doesn't exist

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Add a blank line at the end of the file

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Refactor loading filters configuration (moving into writer package, merge both loading methods & returning error)

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Remove useless log

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Change type of variables (channels & subtopics) and simplify loading method

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Add logging error when loading filters

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Simplify return configuration in loading method

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Merge both filter files into one file

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Move loading subjects into writer package

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Add subscribe to selected subjects

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Edit README of writer services

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Keep only subscribe loop

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Use full NATS subjects

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

* Edit comment in subjects files

Signed-off-by: Jonathan Dreyer <jonathan.dreyer@cleanenergie.ch>

Co-authored-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
2020-03-30 18:24:27 +02:00
..

Postgres writer

Postgres writer provides message repository implementation for Postgres.

Configuration

The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.

Variable Description Default
MF_NATS_URL NATS instance URL nats://localhost:4222
MF_POSTGRES_WRITER_LOG_LEVEL Service log level error
MF_POSTGRES_WRITER_PORT Service HTTP port 9104
MF_POSTGRES_WRITER_DB_HOST Postgres DB host postgres
MF_POSTGRES_WRITER_DB_PORT Postgres DB port 5432
MF_POSTGRES_WRITER_DB_USER Postgres user mainflux
MF_POSTGRES_WRITER_DB_PASS Postgres password mainflux
MF_POSTGRES_WRITER_DB_NAME Postgres database name messages
MF_POSTGRES_WRITER_DB_SSL_MODE Postgres SSL mode disabled
MF_POSTGRES_WRITER_DB_SSL_CERT Postgres SSL certificate path ""
MF_POSTGRES_WRITER_DB_SSL_KEY Postgres SSL key ""
MF_POSTGRES_WRITER_DB_SSL_ROOT_CERT Postgres SSL root certificate path ""
MF_POSTGRES_WRITER_SUBJECTS_CONFIG Configuration file path with subjects list /config/subjects.toml

Deployment

  version: "3.7"
  postgres-writer:
    image: mainflux/postgres-writer:[version]
    container_name: [instance name]
    depends_on:
      - postgres
      - nats
    restart: on-failure
    environment:
      MF_NATS_URL: [NATS instance URL]
      MF_POSTGRES_WRITER_LOG_LEVEL: [Service log level]
      MF_POSTGRES_WRITER_PORT: [Service HTTP port]
      MF_POSTGRES_WRITER_DB_HOST: [Postgres host]
      MF_POSTGRES_WRITER_DB_PORT: [Postgres port]
      MF_POSTGRES_WRITER_DB_USER: [Postgres user]
      MF_POSTGRES_WRITER_DB_PASS: [Postgres password]
      MF_POSTGRES_WRITER_DB_NAME: [Postgres database name]
      MF_POSTGRES_WRITER_DB_SSL_MODE: [Postgres SSL mode]
      MF_POSTGRES_WRITER_DB_SSL_CERT: [Postgres SSL cert]
      MF_POSTGRES_WRITER_DB_SSL_KEY: [Postgres SSL key]
      MF_POSTGRES_WRITER_DB_SSL_ROOT_CERT: [Postgres SSL Root cert]
      MF_POSTGRES_WRITER_SUBJECTS_CONFIG: [Configuration file path with subjects list]
    ports:
      - 9104:9104
    networks:
      - docker_mainflux-base-net
    volume:
      - ./subjects.yaml:/config/subjects.yaml

To start the service, execute the following shell script:

# download the latest version of the service
git clone https://github.com/mainflux/mainflux

cd mainflux

# compile the postgres writer
make postgres-writer

# copy binary to bin
make install

# Set the environment variables and run the service
MF_NATS_URL=[NATS instance URL] MF_POSTGRES_WRITER_LOG_LEVEL=[Service log level] MF_POSTGRES_WRITER_PORT=[Service HTTP port] MF_POSTGRES_WRITER_DB_HOST=[Postgres host] MF_POSTGRES_WRITER_DB_PORT=[Postgres port] MF_POSTGRES_WRITER_DB_USER=[Postgres user] MF_POSTGRES_WRITER_DB_PASS=[Postgres password] MF_POSTGRES_WRITER_DB_NAME=[Postgres database name] MF_POSTGRES_WRITER_DB_SSL_MODE=[Postgres SSL mode] MF_POSTGRES_WRITER_DB_SSL_CERT=[Postgres SSL cert] MF_POSTGRES_WRITER_DB_SSL_KEY=[Postgres SSL key] MF_POSTGRES_WRITER_DB_SSL_ROOT_CERT=[Postgres SSL Root cert] MF_POSTGRES_WRITER_SUBJECTS_CONFIG=[Configuration file path with subjects list] $GOBIN/mainflux-postgres-writer

Usage

Starting service will start consuming normalized messages in SenML format.