NATS Service Configuration
Introduction
The NATS service is the event broker of the system. It distributes events among all other services and enables other services to communicate asynchronously.
Services can Publish events to the nats service and nats will store these events on disk and distribute these events to other services eventually.
Services can Consume events from the nats service by registering to a ConsumerGroup. Each ConsumerGroup is guaranteed to get each event exactly once. In most cases, each service will register its own ConsumerGroup. When there are multiple instances of a service, those instances will usually use that ConsumerGroup as a common resource.
Default Values
-
Thumbnails listens on port 9230 by default.
-
The default location storing events is $OCIS_BASE_DATA_PATH/nats
Underlying Technology
As the service name suggests, this service is based on NATS specifically on NATS Jetstream to enable persistence.
Default Registry
By default, nats-js-kv is configured as the embedded default registry via the MICRO_REGISTRY environment variable, see the Extended Environment Variables and Registry documentation for more details. If you do not want using the built-in nats registry, set MICRO_REGISTRY_ADDRESS to the address of the nats-js cluster, which is the same value as OCIS_EVENTS_ENDPOINT. Optionally use MICRO_REGISTRY_AUTH_USERNAME and MICRO_REGISTRY_AUTH_PASSWORD to authenticate with the external nats cluster.
Persistence
To be able to deliver events even after a system or service restart, the built in nats will store events in a folder on the local filesystem. This folder can be specified by setting the NATS_NATS_STORE_DIR environment variable. If not set, the service will fall back to $OCIS_BASE_DATA_PATH/nats.
TLS Encryption
Connections to the nats service (Publisher/Consumer see above) can be TLS encrypted by setting the corresponding env vars NATS_TLS_CERT, NATS_TLS_KEY to the cert and key files and ENABLE_TLS to true. Checking the certificate of an incoming request can be disabled with the NATS_EVENTS_ENABLE_TLS environment variable.
Certificate files can also be set via global variables starting with OCIS_, for details see the environment variable list.
Note that using TLS is highly recommended for production environments, especially when using container orchestration with Kubernetes.
Configuration
Environment Variables
The nats service is configured via the following environment variables. Read the Environment Variable Types documentation for important details. Column IV shows with which release the environment variable has been introduced.
404: Not Found
YAML Example
-
Note the file shown below must be renamed and placed in the correct folder according to the Configuration File Naming conventions to be effective.
-
See the Notes for Environment Variables if you want to use environment variables in the yaml file.