配置 NATS服务
While the NATS server has many flags that allow for simple testing of features, the NATS server products provide a flexible configuration format that combines the best of traditional formats and newer styles such as JSON and YAML.
The NATS configuration file supports the following syntax:
Lines can be commented with
#
and//
Values can be assigned to properties with:
Equals sign:
foo = 2
Colon:
foo: 2
Whitespace:
foo 2
Arrays are enclosed in brackets:
["a", "b", "c"]
Maps are enclosed in braces:
{foo: 2}
Maps can be assigned with no key separator
Semicolons can be used as terminators
The NATS configuration file is parsed with UTF-8 encoding.
Note
The NATS configuration in the file can also be rendered as a JSON object (with comments!), but to combine it with variables the variables still have to be unquoted.
Strings and Numbers
The configuration parser is very forgiving, as you have seen:
values can be a primitive, or a list, or a map
strings and numbers typically do the right thing
numbers support units such as, 1K for 1000, 1KB for 1024
String values that start with a digit can create issues. To force such values as strings, quote them.
BAD Config:
Fixed Config:
Variables
Server configurations can specify variables. Variables allow you to reference a value from one or more sections in the configuration
Variables:
Are block-scoped
Are referenced with a
$
prefix. They have to be unquoted when being referenced, for example an assigment likefoo = "$example"
will result infoo
being the literal string"$example"
.Can be resolved from environment variables having the same name
If the environment variable value begins with a number you may have trouble resolving it depending on the server version you are running.
A similar configuration, but this time, the value is in the environment:
export TOKEN="hello"; nats-server -c /config/file
Include Directive
The include
directive allows you to split a server configuration into several files. This is useful for separating configuration into chunks that you can easily reuse between different servers.
Includes must use relative paths, and are relative to the main configuration (the one specified via the -c
option):
server.conf:
Note that
include
is not followed by=
or:
, as it is a directive.
auth.conf:
Configuration Properties
Connectivity
Clustering
Connection Timeouts
Limits
JetStream
You can enable JetStream in the server's configuration by simply adding a jetstream {}
map. By default, the JetStream subsystem will store data in the /tmp directory, but you can specify the directory to use via the store_dir
, as well as the limits for JetStream storage (a value of 0 means no limit).
Here's an example minimal file that will store data in a local "nats" directory with some limits.
$ nats-server -c js.conf
Normally JetStream will be run in clustered mode and will replicate data, so the best place to store JetStream data would be locally on a fast SSD. One should specifically avoid NAS or NFS storage for JetStream. Note that each JetStream enabled nats-server should use its own individual storage directory.
Authentication and Authorization
Centralized Authentication and Authorization
Decentralized Authentication and Authorization
The Configuration options here refer to JWT based authentication and authorization.
Runtime Configuration
Monitoring and Tracing
Configuration Reloading
A server can reload most configuration changes without requiring a server restart or clients to disconnect by sending the nats-server a signal:
最后更新于