1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-24 13:48:49 +08:00
b1ackd0t 4401e79a0d
NOISSUE - Add Subscriber Config (#1896)
* Replace Nats with Nats Jestream For PubSub

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Add Stream Description

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Fix connection leak in NATS publisher

The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher.

The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct.

Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection.

This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed.

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>

* Setup subscriber config to contain handler topic and ID

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Add delivery policy

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Avoid duplicate messages

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Rename to DeliveryPolicy

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Fix tests

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

* Not check for data result set when we are returning subset of messages

Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>

* For unsubscribe remove config

Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>

* Fix comment

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>

---------

Signed-off-by: rodneyosodo <blackd0t@protonmail.com>
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-23 15:27:15 +02:00
..
2023-10-18 22:40:55 +02:00
2023-10-18 22:40:55 +02:00

WebSocket adapter

WebSocket adapter provides an WebSocket API for sending and receiving messages through the platform.

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_WS_ADAPTER_LOG_LEVEL Log level for the WS Adapter info
MF_WS_ADAPTER_HTTP_HOST Service WS host
MF_WS_ADAPTER_HTTP_PORT Service WS port 8190
MF_WS_ADAPTER_HTTP_SERVER_CERT Service WS server certificate
MF_WS_ADAPTER_HTTP_SERVER_KEY Service WS server key
MF_THINGS_AUTH_GRPC_URL Things service Auth gRPC URL localhost:7000
MF_THINGS_AUTH_GRPC_TIMEOUT Things service Auth gRPC request timeout in seconds 1s
MF_THINGS_AUTH_GRPC_CLIENT_TLS Flag that indicates if TLS should be turned on false
MF_THINGS_AUTH_GRPC_CA_CERTS Path to trusted CAs in PEM format
MF_MESSAGE_BROKER_URL Message broker instance URL nats://localhost:4222
MF_JAEGER_URL Jaeger server URL http://jaeger:14268/api/traces
MF_SEND_TELEMETRY Send telemetry to mainflux call home server true
MF_WS_ADAPTER_INSTANCE_ID Service instance ID ""

Deployment

The service is distributed as Docker container. Check the ws-adapter service section in docker-compose to see how the service is deployed.

Running this service outside of container requires working instance of the message broker service. To start the service outside of the container, execute the following shell script:

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

cd mainflux

# compile the ws
make ws

# copy binary to bin
make install

# set the environment variables and run the service
MF_WS_ADAPTER_LOG_LEVEL=[WS adapter log level] \
MF_WS_ADAPTER_HTTP_HOST=[Service WS host] \
MF_WS_ADAPTER_HTTP_PORT=[Service WS port] \
MF_WS_ADAPTER_HTTP_SERVER_CERT=[Service WS server certificate] \
MF_WS_ADAPTER_HTTP_SERVER_KEY=[Service WS server key] \
MF_THINGS_AUTH_GRPC_URL=[Things service Auth gRPC URL] \
MF_THINGS_AUTH_GRPC_TIMEOUT=[Things service Auth gRPC request timeout in seconds] \
MF_THINGS_AUTH_GRPC_CLIENT_TLS=[Flag that indicates if TLS should be turned on] \
MF_THINGS_AUTH_GRPC_CA_CERTS=[Path to trusted CAs in PEM format] \
MF_MESSAGE_BROKER_URL=[Message broker instance URL] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_SEND_TELEMETRY=[Send telemetry to mainflux call home server] \
MF_WS_ADAPTER_INSTANCE_ID=[Service instance ID] \
$GOBIN/mainflux-ws

Usage

For more information about service capabilities and its usage, please check out the WebSocket paragraph in the Getting Started guide.