1514 lines
40 KiB
Plaintext
1514 lines
40 KiB
Plaintext
|
# NanoMQ Configuration 0.18.0
|
|||
|
|
|||
|
##============================================================
|
|||
|
## NanoMQ Broker
|
|||
|
##============================================================
|
|||
|
|
|||
|
## url
|
|||
|
## Connect with the host and port
|
|||
|
##
|
|||
|
## Value: nmq-tcp://host:port
|
|||
|
url=nmq-tcp://0.0.0.0:1883
|
|||
|
|
|||
|
## daemon
|
|||
|
## Run the NanoMQ broker in a daemon mode
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
daemon=false
|
|||
|
|
|||
|
## num_taskq_thread
|
|||
|
## Use a specified number of taskq threads
|
|||
|
##
|
|||
|
## Value: 1-255, Obtain automatically if 0
|
|||
|
num_taskq_thread=0
|
|||
|
|
|||
|
## max_taskq_thread
|
|||
|
## Use a specified maximunm number of taskq threads
|
|||
|
##
|
|||
|
## Value: 1-255, Obtain automatically if 0
|
|||
|
max_taskq_thread=0
|
|||
|
|
|||
|
## parallel
|
|||
|
## Handle a specified maximum number of outstanding requests
|
|||
|
##
|
|||
|
## Value: 1-255, Obtain automatically if 0
|
|||
|
parallel=0
|
|||
|
|
|||
|
## Property_size
|
|||
|
## The max size for a MQTT user property
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1-infinity
|
|||
|
property_size=32
|
|||
|
|
|||
|
## The max packet size of NanoMQ (Kbytes)
|
|||
|
## Defines the max size of a packet that NanoMQ could accept
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1 KByte-266240 KByte (260 Mb)
|
|||
|
max_packet_size=10240
|
|||
|
|
|||
|
## The default max packet size of each client (Kbytes)
|
|||
|
## Defines the default max size limit of sending packet to each client
|
|||
|
## Will be overwrite if client set its own max size limit
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1 KByte-266240 KByte (260 Mb)
|
|||
|
client_max_packet_size=10240
|
|||
|
|
|||
|
## msq_len
|
|||
|
## The queue length in-flight window
|
|||
|
## This is essential for performance and memory consumption
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1-infinity
|
|||
|
msq_len=2048
|
|||
|
|
|||
|
## qos_duration (s)
|
|||
|
## The nano qos duration which also controls timer interval of each pipe
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1-infinity
|
|||
|
qos_duration=10
|
|||
|
|
|||
|
## The backoff for MQTT keepalive timeout.
|
|||
|
## broker will discolse client when there is no activity for
|
|||
|
## 'Keepalive * backoff * timeout.
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: Float > 0.5
|
|||
|
keepalive_backoff=1250
|
|||
|
|
|||
|
## anonymous
|
|||
|
## allow anonymous login
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: true | false
|
|||
|
allow_anonymous=true
|
|||
|
|
|||
|
## enable internal IPC server
|
|||
|
## allow IPC server
|
|||
|
##
|
|||
|
## This is for CMD parsing & Gateway/Plugins control
|
|||
|
## Value: true | false
|
|||
|
enable_ipc_internal=false
|
|||
|
|
|||
|
## enable or disable ACL function
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
acl_enable=true
|
|||
|
|
|||
|
## Allow or deny if no ACL rules matched.
|
|||
|
##
|
|||
|
## Value: allow | deny
|
|||
|
acl_nomatch=allow
|
|||
|
|
|||
|
## Whether to enable ACL cache.
|
|||
|
##
|
|||
|
## If enabled, ACLs roles for each client will be cached in the memory
|
|||
|
##
|
|||
|
## Value: on | off
|
|||
|
enable_acl_cache=on
|
|||
|
|
|||
|
## The maximum count of ACL entries can be cached for a client.
|
|||
|
##
|
|||
|
## Value: Integer greater than 0
|
|||
|
## Default: 32
|
|||
|
acl_cache_max_size=32
|
|||
|
|
|||
|
## The time after which an ACL cache entry will be deleted
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 1 minute
|
|||
|
acl_cache_ttl=1m
|
|||
|
|
|||
|
## The action when acl check reject current operation
|
|||
|
##
|
|||
|
## Value: ignore | disconnect
|
|||
|
## Default: ignore
|
|||
|
acl_deny_action=ignore
|
|||
|
|
|||
|
## ACL Rules
|
|||
|
## Format:
|
|||
|
## acl.rule.<No>=<Spec>
|
|||
|
|
|||
|
## Allow MQTT client using username "dashboard" to subscribe to "$SYS/#" topics
|
|||
|
# acl.rule.1={"permit": "allow", "username": "dashboard", "action": "subscribe", "topics": ["$SYS/#"]}
|
|||
|
|
|||
|
## Allow users with IP address "127.0.0.1" to publish/subscribe to topics "$SYS/#", "#"
|
|||
|
# acl.rule.2={"permit": "allow", "ipaddr": "127.0.0.1", "action": "pubsub", "topics": ["$SYS/#", "#"]}
|
|||
|
|
|||
|
## Deny "All Users" subscribe to "$SYS/#" "#" Topics
|
|||
|
# acl.rule.3={"permit": "deny", "username": "#", "action": "subscribe", "topics": ["$SYS/#", "#"]}
|
|||
|
|
|||
|
## Allow any other publish/subscribe operation
|
|||
|
# acl.rule.4={"permit": "allow"}
|
|||
|
|
|||
|
## -------------------- SQLite Config -------------------- ##
|
|||
|
|
|||
|
## Enable sqlite cache
|
|||
|
## Whether to enable sqlite
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
sqlite.enable=false
|
|||
|
|
|||
|
## Max message limitation for caching
|
|||
|
## ( 0 means ineffective )
|
|||
|
## Value: 1-infinity
|
|||
|
sqlite.disk_cache_size=102400
|
|||
|
|
|||
|
## Mounted file path
|
|||
|
##
|
|||
|
## Value: path
|
|||
|
#sqlite.mounted_file_path=/tmp/
|
|||
|
|
|||
|
## The threshold of flushing messages to flash.
|
|||
|
##
|
|||
|
## Hot updatable
|
|||
|
## Value: 1-infinity
|
|||
|
sqlite.flush_mem_threshold=100
|
|||
|
|
|||
|
## Resend interval (ms)
|
|||
|
## The interval for resending the messages after failure recovered. (not related to trigger)
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
sqlite.resend_interval=5000
|
|||
|
|
|||
|
##============================================================
|
|||
|
## TLS/SSL
|
|||
|
##============================================================
|
|||
|
|
|||
|
## enable tls
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
tls.enable=false
|
|||
|
|
|||
|
## tls url
|
|||
|
##
|
|||
|
## Value: "tls+nmq-tcp://host:port"
|
|||
|
tls.url=tls+nmq-tcp://0.0.0.0:8883
|
|||
|
|
|||
|
## tls key password
|
|||
|
## String containing the user's password. Only used if the private keyfile
|
|||
|
## is password-protected.
|
|||
|
## Quote "" is not needed
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## tls.key_password=yourpass
|
|||
|
|
|||
|
## tls keyfile
|
|||
|
## Path to the file containing the user's private PEM-encoded key.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
tls.keyfile=/etc/certs/key.pem
|
|||
|
|
|||
|
## tls cert file
|
|||
|
## Path to a file containing the user certificate.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
tls.certfile=/etc/certs/cert.pem
|
|||
|
|
|||
|
## tls ca cert file
|
|||
|
## Path to the file containing PEM-encoded CA certificates. The CA certificates
|
|||
|
## are used during server authentication and when building the client certificate chain.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
tls.cacertfile=/etc/certs/cacert.pem
|
|||
|
|
|||
|
## A server only does x509-path validation in mode verify_peer,
|
|||
|
## as it then sends a certificate request to the client (this
|
|||
|
## message is not sent if the verify option is verify_none).
|
|||
|
## You can then also want to specify option fail_if_no_peer_cert.
|
|||
|
##
|
|||
|
## Value: true: verify_peer | false: verify_none
|
|||
|
tls.verify_peer=false
|
|||
|
|
|||
|
## Used together with {verify, verify_peer} by an SSL server. If set to true,
|
|||
|
## the server fails if the client does not have a certificate to send, that is,
|
|||
|
## sends an empty certificate.
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
tls.fail_if_no_peer_cert=false
|
|||
|
|
|||
|
|
|||
|
##============================================================
|
|||
|
## WebSocket
|
|||
|
##============================================================
|
|||
|
|
|||
|
## allow websocket
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
websocket.enable=true
|
|||
|
|
|||
|
## websocket url
|
|||
|
##
|
|||
|
## Value: "nmq-ws://host:port/path"
|
|||
|
websocket.url=nmq-ws://0.0.0.0:8083/mqtt
|
|||
|
|
|||
|
## websocket tls url
|
|||
|
##
|
|||
|
## Value: "nmq-wss://host:port/path"
|
|||
|
websocket.tls_url=nmq-wss://0.0.0.0:8084/mqtt
|
|||
|
|
|||
|
|
|||
|
##============================================================
|
|||
|
## Http server
|
|||
|
##============================================================
|
|||
|
|
|||
|
## allow http server
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
http_server.enable=false
|
|||
|
|
|||
|
## http server port
|
|||
|
##
|
|||
|
## Value: 0 - 65535
|
|||
|
http_server.port=8081
|
|||
|
|
|||
|
## parallel for http server
|
|||
|
## Handle a specified maximum number of outstanding requests
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
http_server.parallel=32
|
|||
|
|
|||
|
## http server username
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
http_server.username=admin
|
|||
|
|
|||
|
## http server password
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
http_server.password=public
|
|||
|
|
|||
|
## http server auth type
|
|||
|
## If set auth_type=jwt, make sure you have built JWT dependency with `-DENABLE_JWT=ON` first.
|
|||
|
##
|
|||
|
## Value: basic | jwt
|
|||
|
http_server.auth_type=basic
|
|||
|
|
|||
|
## http server jwt public key file
|
|||
|
## Used together with 'http_server.auth_type=jwt',
|
|||
|
## Path to the file containing the user's private key.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
http_server.jwt.public.keyfile=/etc/certs/jwt/jwtRS256.key.pub
|
|||
|
|
|||
|
## http server jwt private key file
|
|||
|
## Used together with 'http_server.auth_type=jwt',
|
|||
|
## Path to the file containing the user's publick key.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
http_server.jwt.private.keyfile=/etc/certs/jwt/jwtRS256.key
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## ------------------ Logging Config ------------------ ##
|
|||
|
|
|||
|
## Where to emit the logs.
|
|||
|
##
|
|||
|
## - file: write logs to file
|
|||
|
## - console: write logs to standard I/O
|
|||
|
## - syslog: write logs to syslog
|
|||
|
## Value: file | console | syslog
|
|||
|
## Example: file,console,syslog
|
|||
|
log.to=file,console
|
|||
|
|
|||
|
## The log severity level.
|
|||
|
##
|
|||
|
## Value: trace | debug | info | warn | error | fatal
|
|||
|
##
|
|||
|
## Note: Only the messages with severity level higher than or equal to
|
|||
|
## this level will be logged.
|
|||
|
##
|
|||
|
## Default: warn
|
|||
|
log.level=info
|
|||
|
|
|||
|
## The dir for log files.
|
|||
|
##
|
|||
|
## Value: Folder
|
|||
|
log.dir=/tmp
|
|||
|
|
|||
|
## The log filename for logs of level specified in "log.level".
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Default: nanomq.log
|
|||
|
log.file=nanomq.log
|
|||
|
|
|||
|
## Maximum size of each log file.
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
## Default: 10M
|
|||
|
## Supported Unit: KB | MB | GB
|
|||
|
log.rotation.size=10MB
|
|||
|
|
|||
|
## Maximum rotation count of log files.
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
## Default: 5
|
|||
|
log.rotation.count=5
|
|||
|
|
|||
|
##============================================================
|
|||
|
## Authorization
|
|||
|
##============================================================
|
|||
|
|
|||
|
##auth.1.login = admin
|
|||
|
##auth.1.password = public
|
|||
|
|
|||
|
##auth.2.login = client
|
|||
|
##auth.2.password = public
|
|||
|
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## HTTP Authorization
|
|||
|
##--------------------------------------------------------------------
|
|||
|
|
|||
|
## Enable Authentication/ACL with HTTP API
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
auth.http.enable = false
|
|||
|
|
|||
|
## HTTP URL API path for Auth Request
|
|||
|
##
|
|||
|
## Value: URL
|
|||
|
##
|
|||
|
## Examples: http://127.0.0.1:80/mqtt/auth, https://[::1]:80/mqtt/auth
|
|||
|
auth.http.auth_req.url = http://127.0.0.1:80/mqtt/auth
|
|||
|
|
|||
|
## HTTP Request Method for Auth Request
|
|||
|
##
|
|||
|
## Value: post | get
|
|||
|
auth.http.auth_req.method = post
|
|||
|
|
|||
|
## HTTP Request Headers for Auth Request, Content-Type header is configured by default.
|
|||
|
## The possible values of the Content-Type header: application/x-www-form-urlencoded, application/json
|
|||
|
##
|
|||
|
## Examples: auth.http.auth_req.headers.accept = */*
|
|||
|
auth.http.auth_req.headers.content-type = application/x-www-form-urlencoded
|
|||
|
|
|||
|
## Parameters used to construct the request body or query string parameters
|
|||
|
## When the request method is GET, these parameters will be converted into query string parameters
|
|||
|
## When the request method is POST, the final format is determined by content-type
|
|||
|
##
|
|||
|
## Available Variables:
|
|||
|
## - %u: username
|
|||
|
## - %c: clientid
|
|||
|
## - %a: ipaddress
|
|||
|
## - %r: protocol
|
|||
|
## - %P: password
|
|||
|
## - %p: sockport of server accepted
|
|||
|
## - %C: common name of client TLS cert
|
|||
|
## - %d: subject of client TLS cert
|
|||
|
##
|
|||
|
## Value: <K1>=<V1>,<K2>=<V2>,...
|
|||
|
auth.http.auth_req.params = clientid=%c,username=%u,password=%P
|
|||
|
|
|||
|
## HTTP URL API path for SuperUser Request
|
|||
|
##
|
|||
|
## Value: URL
|
|||
|
##
|
|||
|
## Examples: http://127.0.0.1:80/mqtt/superuser, https://[::1]:80/mqtt/superuser
|
|||
|
# auth.http.super_req.url = http://127.0.0.1:80/mqtt/superuser
|
|||
|
|
|||
|
## Time-out time for the request.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## -h: hour, e.g. '2h' for 2 hours
|
|||
|
## -m: minute, e.g. '5m' for 5 minutes
|
|||
|
## -s: second, e.g. '30s' for 30 seconds
|
|||
|
##
|
|||
|
## Default: 5s
|
|||
|
auth.http.timeout = 5s
|
|||
|
|
|||
|
## Connection time-out time, used during the initial request,
|
|||
|
## when the client is connecting to the server.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## -h: hour, e.g. '2h' for 2 hours
|
|||
|
## -m: minute, e.g. '5m' for 5 minutes
|
|||
|
## -s: second, e.g. '30s' for 30 seconds
|
|||
|
##
|
|||
|
## Default: 5s
|
|||
|
auth.http.connect_timeout = 5s
|
|||
|
|
|||
|
## Connection process pool size
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
auth.http.pool_size = 32
|
|||
|
|
|||
|
|
|||
|
##============================================================
|
|||
|
## WebHook
|
|||
|
##============================================================
|
|||
|
|
|||
|
## Enable web hook
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
web.hook.enable=false
|
|||
|
|
|||
|
## Webhook URL
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
web.hook.url=http://127.0.0.1:80
|
|||
|
|
|||
|
## HTTP Headers
|
|||
|
##
|
|||
|
## Example:
|
|||
|
## 1. web.hook.headers.content-type=application/json
|
|||
|
## 2. web.hook.headers.accept=*
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
web.hook.headers.content-type=application/json
|
|||
|
|
|||
|
## The encoding format of the payload field in the HTTP body
|
|||
|
## The payload field only appears in the on_message_publish and on_message_delivered actions
|
|||
|
##
|
|||
|
## Value: plain | base64 | base62
|
|||
|
web.hook.body.encoding_of_payload_field=plain
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## PEM format file of CA's
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## web.hook.ssl.cacertfile =<PEM format file of CA's>
|
|||
|
|
|||
|
## Certificate file to use, PEM format assumed
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## web.hook.ssl.certfile=<Certificate file to use>
|
|||
|
|
|||
|
## Private key file to use, PEM format assumed
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## web.hook.ssl.keyfile=<Private key file to use>
|
|||
|
|
|||
|
## Turn on peer certificate verification
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
## web.hook.ssl.verify=false
|
|||
|
|
|||
|
## If not specified, the server's names returned in server's certificate is validated against
|
|||
|
## what's provided `web.hook.url` config's host part.
|
|||
|
## Setting to 'false' will make NanoMQ ignore unmatched server names.
|
|||
|
## If set with a host name, the server's names returned in server's certificate is validated
|
|||
|
## against this value.
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
## web.hook.ssl.server_name_indication=false
|
|||
|
|
|||
|
## Connection process pool size
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
web.hook.pool_size=32
|
|||
|
|
|||
|
## Hook Rules
|
|||
|
## These configuration items represent a list of events should be forwarded
|
|||
|
##
|
|||
|
## Format:
|
|||
|
## web.hook.rule.<HookName>.<No>=<Spec>
|
|||
|
#web.hook.rule.client.connect.1={"action": "on_client_connect"}
|
|||
|
#web.hook.rule.client.connack.1={"action": "on_client_connack"}
|
|||
|
#web.hook.rule.client.connected.1={"action": "on_client_connected"}
|
|||
|
#web.hook.rule.client.disconnected.1={"action": "on_client_disconnected"}
|
|||
|
#web.hook.rule.client.subscribe.1={"action": "on_client_subscribe"}
|
|||
|
#web.hook.rule.client.unsubscribe.1={"action": "on_client_unsubscribe"}
|
|||
|
#web.hook.rule.session.subscribed.1={"action": "on_session_subscribed"}
|
|||
|
#web.hook.rule.session.unsubscribed.1={"action": "on_session_unsubscribed"}
|
|||
|
#web.hook.rule.session.terminated.1={"action": "on_session_terminated"}
|
|||
|
#web.hook.rule.message.publish.1={"action": "on_message_publish"}
|
|||
|
#web.hook.rule.message.delivered.1={"action": "on_message_delivered"}
|
|||
|
#web.hook.rule.message.acked.1={"action": "on_message_acked"}
|
|||
|
|
|||
|
|
|||
|
##====================================================================
|
|||
|
## MQTT Broker Bridge
|
|||
|
##====================================================================
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## NanoMQ supports multi-channels of MQTT bridging.
|
|||
|
##
|
|||
|
## Format:
|
|||
|
## bridge.mqtt.{name}.{item} = {value}
|
|||
|
## Example:
|
|||
|
## 1:
|
|||
|
## bridge.mqtt.emqx.address = mqtt-tcp://{host}:{port}
|
|||
|
## bridge.mqtt.emqx.bridge_mode = true
|
|||
|
## bridge.mqtt.emqx.username = admin
|
|||
|
## bridge.mqtt.emqx.password = public
|
|||
|
## bridge.mqtt.emqx.<item> = {value}
|
|||
|
##
|
|||
|
## 2:
|
|||
|
## bridge.mqtt.aliyun.address = mqtt-tcp://{host}:{port}
|
|||
|
## bridge.mqtt.aliyun.bridge_mode = true
|
|||
|
## bridge.mqtt.aliyun.username = admin
|
|||
|
## bridge.mqtt.aliyun.password = public
|
|||
|
## bridge.mqtt.aliyun.<item> = {value}
|
|||
|
|
|||
|
## Whether to enable bridge mode for mqtt bridge
|
|||
|
##
|
|||
|
## This option is prepared for the mqtt broker which does not
|
|||
|
## support bridge_mode such as the mqtt-plugin of the rabbitmq
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
bridge.mqtt.emqx.bridge_mode=false
|
|||
|
|
|||
|
## Bridge address: host:port .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: mqtt-tcp://127.0.0.1:1883
|
|||
|
## tls+mqtt-tcp://127.0.0.1:8883
|
|||
|
## mqtt-quic://54.75.171.11:14567
|
|||
|
bridge.mqtt.emqx.address=mqtt-tcp://broker.emqx.io:1883
|
|||
|
|
|||
|
## Protocol version of the bridge.
|
|||
|
##
|
|||
|
## Value: Enum
|
|||
|
## - 5: mqttv5
|
|||
|
## - 4: mqttv311
|
|||
|
## - 3: mqttv31
|
|||
|
bridge.mqtt.emqx.proto_ver=4
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## The following config params only effective when set QUIC as the
|
|||
|
## transport layer of bridging connection (mqtt-quic://{host}:{port})!
|
|||
|
##
|
|||
|
|
|||
|
## Ping: interval of a sending keepalive packet via QUIC transport.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 120 seconds
|
|||
|
bridge.mqtt.emqx.quic_keepalive=120
|
|||
|
|
|||
|
## Idle Timeout: How long a connection can go idle before it is gracefully shut down.
|
|||
|
## 0 to disable timeout, which may lost disconnect event msg.
|
|||
|
## Value: Duration
|
|||
|
## Default: 120 seconds
|
|||
|
bridge.mqtt.emqx.quic_idle_timeout=120
|
|||
|
|
|||
|
## Disconnect Timeout: How long to wait for an ACK before declaring
|
|||
|
## a path dead and disconnecting, This affects stream living time.
|
|||
|
## Value: Duration
|
|||
|
## Default: 20 seconds
|
|||
|
bridge.mqtt.emqx.quic_discon_timeout=20
|
|||
|
|
|||
|
## Handshake Timeout: the Max time NanoMQ waits for establishing QUIC connection
|
|||
|
## How long a handshake can idle before it is discarded
|
|||
|
## Value: Duration
|
|||
|
## Default: 60 seconds
|
|||
|
bridge.mqtt.emqx.quic_handshake_timeout=60
|
|||
|
|
|||
|
## Send Idle Timeout: Reset congestion control after being idle `SendIdleTimeout`
|
|||
|
## Value: Duration
|
|||
|
## Default: 60 seconds
|
|||
|
bridge.mqtt.emqx.quic_send_idle_timeout=2
|
|||
|
|
|||
|
## Initial RTT: Initial RTT estimate. (ms)
|
|||
|
## RTT: round trip time
|
|||
|
## Default: 800ms
|
|||
|
bridge.mqtt.emqx.quic_initial_rtt_ms=800
|
|||
|
|
|||
|
## Max Ack Delay: How long to wait after receiving data before sending an ACK.
|
|||
|
## Value: Duration
|
|||
|
## Default: 100ms
|
|||
|
bridge.mqtt.emqx.quic_max_ack_delay_ms=100
|
|||
|
|
|||
|
## congestion_control: pick an algorithm from bbr or cubic
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Default: cubic
|
|||
|
bridge.mqtt.emqx.quic_congestion_control=cubic
|
|||
|
|
|||
|
## Hybrid bridging: enable or disable the hybrid bridging mode
|
|||
|
## Recommend to enable it when you want to take advantage of QUIC
|
|||
|
## but not sure if the public network support QUIC.
|
|||
|
## Value: true/false
|
|||
|
## Default: false
|
|||
|
bridge.mqtt.emqx.hybrid_bridging=false
|
|||
|
|
|||
|
## multi-stream: enable or disable the multi-stream bridging mode
|
|||
|
## Still a feature WIP, but basic func is ready
|
|||
|
## Value: true/false
|
|||
|
## Default: false
|
|||
|
bridge.mqtt.emqx.quic_multi_stream=false
|
|||
|
|
|||
|
## qos_priority: send QoS 1/2 msg in high prority
|
|||
|
## QoS 0 messages remain as same
|
|||
|
## Value: true/false
|
|||
|
## Default: true
|
|||
|
bridge.mqtt.emqx.quic_qos_priority=true
|
|||
|
|
|||
|
## QUIC 0RTT: enable or diable 0RTT, 0RTT is a feature of QUIC to re-establish
|
|||
|
## connection quickly.
|
|||
|
## Value: true/false
|
|||
|
## Default: true
|
|||
|
bridge.mqtt.emqx.quic_0rtt=true
|
|||
|
|
|||
|
##
|
|||
|
##--------------------------------------------------------------------
|
|||
|
|
|||
|
## The ClientId of a remote bridge.
|
|||
|
## Default random string.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
#bridge.mqtt.emqx.clientid=bridge_client
|
|||
|
|
|||
|
## Ping: interval of a downward bridge.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 10 seconds
|
|||
|
bridge.mqtt.emqx.keepalive=60
|
|||
|
|
|||
|
## The maximum backoff timeout.
|
|||
|
## Reconnect after no more than backoff_max when bridge connection lost.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 60 seconds
|
|||
|
bridge.mqtt.emqx.backoff_max=60
|
|||
|
|
|||
|
## The Clean start flag of a remote bridge.
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
## Default: false
|
|||
|
##
|
|||
|
## NOTE: Some IoT platforms require clean_start
|
|||
|
## must be set to 'true'
|
|||
|
bridge.mqtt.emqx.clean_start=false
|
|||
|
|
|||
|
## The username for a remote bridge.
|
|||
|
## Quote "" is not needed
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
bridge.mqtt.emqx.username=username
|
|||
|
|
|||
|
## The password for a remote bridge.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
bridge.mqtt.emqx.password=passwd
|
|||
|
|
|||
|
## Topics that need to be forward to IoTHUB
|
|||
|
##
|
|||
|
## The topic in msg send to remote will not be changed
|
|||
|
## if nothing is filled in after the =
|
|||
|
## Like this `bridge.mqtt.emqx.forwards.1.remote_topic=`
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
bridge.mqtt.emqx.forwards.1.remote_topic=fwd/topic1
|
|||
|
bridge.mqtt.emqx.forwards.1.local_topic=topic1
|
|||
|
|
|||
|
## Override flag for retain
|
|||
|
## Override the retain flag in the msg is about to forward
|
|||
|
## with this option. (0|1) stand for override the retain flag with (0|1).
|
|||
|
## 2 stands for keeping retain flag as it is.
|
|||
|
##
|
|||
|
## Value: Number (0|1|2)
|
|||
|
bridge.mqtt.emqx.forwards.1.retain=2
|
|||
|
|
|||
|
## Need to subscribe to remote broker topics
|
|||
|
##
|
|||
|
## The topic in msg send to local will not be changed
|
|||
|
## if nothing is filled in after the =
|
|||
|
## Like this `bridge.mqtt.emqx.subscription.1.local_topic=`
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
bridge.mqtt.emqx.subscription.1.remote_topic=cmd/topic1
|
|||
|
bridge.mqtt.emqx.subscription.1.local_topic=topic1
|
|||
|
|
|||
|
## Override flag for retain
|
|||
|
## Override the retain flag in the msg is about to distribute to clients
|
|||
|
## with this option. (0|1) stand for override the retain flag with (0|1).
|
|||
|
## 2 stands for keeping retain flag as it is.
|
|||
|
##
|
|||
|
## Value: Number (0|1|2)
|
|||
|
bridge.mqtt.emqx.subscription.1.retain=2
|
|||
|
|
|||
|
## Need to subscribe to remote topics QoS.
|
|||
|
## Please set QoS for each subscription topic
|
|||
|
## otherwise topic is invalid, NanoMQ won't sub to any topic
|
|||
|
## Value: Number
|
|||
|
bridge.mqtt.emqx.subscription.1.qos=1
|
|||
|
|
|||
|
## Need to subscribe to remote broker topics
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
bridge.mqtt.emqx.subscription.2.remote_topic=cmd/topic2
|
|||
|
bridge.mqtt.emqx.subscription.2.local_topic=topic2
|
|||
|
|
|||
|
## Override flag for retain
|
|||
|
##
|
|||
|
## Value: Number (0|1|2)
|
|||
|
bridge.mqtt.emqx.subscription.2.retain=2
|
|||
|
|
|||
|
## Need to subscribe to remote topics QoS.
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
bridge.mqtt.emqx.subscription.2.qos=2
|
|||
|
|
|||
|
## parallel
|
|||
|
## Handle a specified maximum number of outstanding requests
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
bridge.mqtt.emqx.parallel=2
|
|||
|
|
|||
|
## max send queue length
|
|||
|
## Handle a specified maximum number of message send queue length
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
bridge.mqtt.emqx.max_send_queue_len=32
|
|||
|
|
|||
|
## max receive queue length
|
|||
|
## Handle a specified maximum number of message receive queue length
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
bridge.mqtt.emqx.max_recv_queue_len=128
|
|||
|
|
|||
|
# # Resend interval (ms)
|
|||
|
# # The interval for resending the messages after failure recovered. (not related to trigger)
|
|||
|
# # move from cache to bridge since 0.22.8
|
|||
|
# # Value: 1-infinity (uint64)
|
|||
|
bridge.mqtt.emqx.resend_interval=5000
|
|||
|
|
|||
|
# # Resend wait time (ms)
|
|||
|
# # The waiting time for resending the messages after it is publiushed.
|
|||
|
# # Tips: set it longer than keepalive if you dont want too much duplicated msg
|
|||
|
# # Value: 1-infinity (uint64)
|
|||
|
bridge.mqtt.emqx.resend_wait = 3000
|
|||
|
|
|||
|
# # max Ack wait time for each QoS msg (ms)
|
|||
|
# # The waiting time for Acknowledgment of every QoS msg. Does not affect normal sending.
|
|||
|
# # Tips: QoS msg requries a delivered ack, which occupies an AIO.
|
|||
|
# # set a max timeout time to cancel the ack action.
|
|||
|
# # once it is canceled, there is no more retrying of this msg.
|
|||
|
# # Value: 1-infinity (uint64)
|
|||
|
bridge.mqtt.emqx.cancel_timeout = 10000
|
|||
|
|
|||
|
## MQTT V5 Property for Connection ##
|
|||
|
|
|||
|
# # Maximum Packet Size
|
|||
|
# #
|
|||
|
# # If the Maximum Packet Size is not present, no limit on the packet size is imposed beyond
|
|||
|
# # the limitations in the protocol as a result of the remaining length encoding and the protocol header sizes.
|
|||
|
# # Value: 1 ~ 4294967295
|
|||
|
# bridge.mqtt.emqx.connect.properties.maximum_packet_size=0
|
|||
|
|
|||
|
# # Receive Maximum
|
|||
|
# #
|
|||
|
# # The Client uses this value to limit the number of QoS 1 and QoS 2 publications that it is willing to process concurrently.
|
|||
|
# # There is no mechanism to limit the QoS 0 publications that the Server might try to send.
|
|||
|
# # The value of Receive Maximum applies only to the current Network Connection.
|
|||
|
# # If the Receive Maximum value is absent then its value defaults to 65,535.
|
|||
|
# #
|
|||
|
# # Value: 1 ~ 65535
|
|||
|
# bridge.mqtt.emqx.connect.properties.receive_maximum=65535
|
|||
|
|
|||
|
# # Topic Alias Maximum
|
|||
|
# #
|
|||
|
# # If the Topic Alias Maximum property is absent, the default value is 0.
|
|||
|
# # This value indicates the highest value that the Client will accept as a Topic Alias sent by the Server.
|
|||
|
# # The Client uses this value to limit the number of Topic Aliases that it is willing to hold on this Connection.
|
|||
|
# # Default: 0
|
|||
|
# # Value: 0 ~ 65535
|
|||
|
# bridge.mqtt.emqx.connect.properties.topic_alias_maximum=0
|
|||
|
|
|||
|
# # Request Problem Information
|
|||
|
# #
|
|||
|
# # If the Request Problem Information is absent, the value of 1 is used.
|
|||
|
# # The Client uses this value to indicate whether the Reason String or User Properties are sent in the case of failures.
|
|||
|
# # If the value of Request Problem Information is 0, the Server MAY return a Reason String or User Properties on a CONNACK or DISCONNECT packet,
|
|||
|
# # but MUST NOT send a Reason String or User Properties on any packet other than PUBLISH, CONNACK, or DISCONNECT.
|
|||
|
# # If the value is 0 and the Client receives a Reason String or User Properties in a packet other than PUBLISH, CONNACK, or DISCONNECT,
|
|||
|
# # it uses a DISCONNECT packet with Reason Code 0x82 (Protocol Error) as described in section 4.13 Handling errors.
|
|||
|
# # If this value is 1, the Server MAY return a Reason String or User Properties on any packet where it is allowed.
|
|||
|
# #
|
|||
|
# # Default: 1
|
|||
|
# # Value: 0 | 1
|
|||
|
# bridge.mqtt.emqx.connect.properties.request_problem_infomation=0
|
|||
|
|
|||
|
# # Request Response Information
|
|||
|
# #
|
|||
|
# # If the Request Response Information is absent, the value of 0 is used.
|
|||
|
# # The Client uses this value to request the Server to return Response Information in the CONNACK.
|
|||
|
# # A value of 0 indicates that the Server MUST NOT return Response Information.
|
|||
|
# # If the value is 1 the Server MAY return Response Information in the CONNACK packet.
|
|||
|
# #
|
|||
|
# # Default: 0
|
|||
|
# # Value: 0 | 1
|
|||
|
# bridge.mqtt.emqx.connect.properties.request_response_infomation=1
|
|||
|
|
|||
|
# # Session Expiry Interval
|
|||
|
# #
|
|||
|
# # If the Session Expiry Interval is absent the value 0 is used.
|
|||
|
# # If it is set to 0, or is absent, the Session ends when the Network Connection is closed.
|
|||
|
# # If the Session Expiry Interval is 4294967295 (UINT_MAX), the Session does not expire.
|
|||
|
# #
|
|||
|
# # Value: 0 ~ 4294967295
|
|||
|
# bridge.mqtt.emqx.connect.properties.session_expiry_interval=0
|
|||
|
|
|||
|
# # User Property
|
|||
|
# #
|
|||
|
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
|
|||
|
# # The same name is allowed to appear more than once.
|
|||
|
# # Value: Json string: key(String) - value(String)
|
|||
|
# bridge.mqtt.emqx.connect.properties.user_property={"key1":"value1","key2":"value2"}
|
|||
|
|
|||
|
## MQTT V5 Property for Subscription ##
|
|||
|
|
|||
|
# # Subscription Identifier
|
|||
|
# #
|
|||
|
# # The Subscription Identifier can have the value of 1 to 268,435,455.
|
|||
|
# # It is a Protocol Error if the Subscription Identifier has a value of 0.
|
|||
|
# # It is a Protocol Error to include the Subscription Identifier more than once.
|
|||
|
# # The Subscription Identifier is associated with any subscription created or modified as the result of this SUBSCRIBE packet.
|
|||
|
# # If there is a Subscription Identifier, it is stored with the subscription.
|
|||
|
# # If this property is not specified, then the absence of a Subscription Identifier is stored with the subscription.
|
|||
|
# #
|
|||
|
# # Value: 1 ~ 268,435,455
|
|||
|
# bridge.mqtt.emqx.subscription.properties.identifier=1
|
|||
|
|
|||
|
# # User Property
|
|||
|
# #
|
|||
|
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
|
|||
|
# # The same name is allowed to appear more than once.
|
|||
|
# # Value: Json string: key(String) - value(String)
|
|||
|
# bridge.mqtt.emqx.subscription.properties.user_property={"key1":"value1","key2":"value2"}
|
|||
|
|
|||
|
# # Will topic
|
|||
|
bridge.mqtt.emqx.will.topic=will_topic
|
|||
|
|
|||
|
# # Will qos
|
|||
|
bridge.mqtt.emqx.will.qos=2
|
|||
|
|
|||
|
# # Will retain
|
|||
|
bridge.mqtt.emqx.will.retain=false
|
|||
|
|
|||
|
# # Will payload
|
|||
|
bridge.mqtt.emqx.will.payload=will_message
|
|||
|
|
|||
|
## MQTT V5 Property for Will ##
|
|||
|
|
|||
|
# # Payload Format Indicator
|
|||
|
# #
|
|||
|
# # 0 (0x00) Byte Indicates that the Will Message is unspecified bytes,
|
|||
|
# # which is equivalent to not sending a Payload Format Indicator.
|
|||
|
# #
|
|||
|
# # 1 (0x01) Byte Indicates that the Will Message is UTF-8 Encoded Character Data.
|
|||
|
# #
|
|||
|
# # Default: 0
|
|||
|
# # Value: 0 | 1
|
|||
|
bridge.mqtt.emqx.will.properties.payload_format_indicator=0
|
|||
|
|
|||
|
# # Message Expiry Interval
|
|||
|
# #
|
|||
|
# # If present, the Four Byte value is the lifetime of the Will Message in seconds
|
|||
|
# # and is sent as the Publication Expiry Interval when the Server publishes the Will Message.
|
|||
|
# #
|
|||
|
# # If absent, no Message Expiry Interval is sent when the Server publishes the Will Message.
|
|||
|
bridge.mqtt.emqx.will.properties.message_expiry_interval=100
|
|||
|
|
|||
|
# # Content Type
|
|||
|
# # The value of the Content Type is defined by the sending and receiving application.
|
|||
|
# bridge.mqtt.emqx.will.properties.content_type=
|
|||
|
|
|||
|
# # Response Topic
|
|||
|
# # The presence of a Response Topic identifies the Will Message as a Request.
|
|||
|
# bridge.mqtt.emqx.will.properties.response_topic=
|
|||
|
|
|||
|
# # Correlation Data
|
|||
|
# # The Correlation Data is used by the sender of the Request Message to identify which request
|
|||
|
# # the Response Message is for when it is received.
|
|||
|
# bridge.mqtt.emqx.will.properties.correlation_data=
|
|||
|
|
|||
|
# # Will Delay Interval
|
|||
|
# #
|
|||
|
# # If the Will Delay Interval is absent, the default value is 0 and there is no delay
|
|||
|
# # before the Will Message is published.
|
|||
|
# #
|
|||
|
# # The Server delays publishing the Client’s Will Message until the Will Delay Interval
|
|||
|
# # has passed or the Session ends, whichever happens first.
|
|||
|
# # If a new Network Connection to this Session is made before the Will Delay Interval has passed, the Server MUST NOT send the Will Message
|
|||
|
bridge.mqtt.emqx.will.properties.will_delay_interval=30
|
|||
|
|
|||
|
# # User Property
|
|||
|
# #
|
|||
|
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
|
|||
|
# # The same name is allowed to appear more than once.
|
|||
|
# # Value: Map[key(String) - value(String)]
|
|||
|
bridge.mqtt.emqx.will.properties.user_property={"key1":"value1","key2":"value2"}
|
|||
|
|
|||
|
|
|||
|
## enable tls
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
bridge.mqtt.emqx.tls.enable=false
|
|||
|
|
|||
|
## tls key password
|
|||
|
## String containing the user's password. Only used if the private keyfile
|
|||
|
## is password-protected.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## bridge.mqtt.emqx.tls.key_password=yourpass
|
|||
|
|
|||
|
## tls keyfile
|
|||
|
## Path of the file containing the client's private key.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## bridge.mqtt.emqx.tls.keyfile=/etc/certs/key.pem
|
|||
|
|
|||
|
## tls cert file
|
|||
|
## Path of the file containing the client certificate.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## bridge.mqtt.emqx.tls.certfile=/etc/certs/cert.pem
|
|||
|
|
|||
|
## tls ca cert file
|
|||
|
## Path of the file containing the server's root CA certificate.
|
|||
|
##
|
|||
|
## This certificate is used to identify the Emqx IoT server and is publicly
|
|||
|
## available.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
## bridge.mqtt.emqx.tls.cacertfile=/etc/certs/cacert.pem
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## Next bridge configuration
|
|||
|
##
|
|||
|
## bridge.mqtt.<name>.address=mqtt-tcp://{host}:{port}
|
|||
|
## bridge.mqtt.<name>.bridge_mode=true
|
|||
|
## bridge.mqtt.<name>.username=admin
|
|||
|
## bridge.mqtt.<name>.password=public
|
|||
|
## bridge.mqtt.<name>.<item>={value}
|
|||
|
##
|
|||
|
##--------------------------------------------------------------------
|
|||
|
|
|||
|
## SQLite Config ##
|
|||
|
|
|||
|
## Enable sqlite cache
|
|||
|
## Whether to enable sqlite
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
bridge.sqlite.enable=false
|
|||
|
|
|||
|
## Max message limitation for caching
|
|||
|
## ( 0 means ineffective )
|
|||
|
## Value: 1-infinity
|
|||
|
bridge.sqlite.disk_cache_size=102400
|
|||
|
|
|||
|
## Mounted file path
|
|||
|
##
|
|||
|
## Value: path
|
|||
|
#bridge.sqlite.mounted_file_path=/tmp/
|
|||
|
|
|||
|
## The threshold of flushing messages to flash.
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
bridge.sqlite.flush_mem_threshold=100
|
|||
|
|
|||
|
##====================================================================
|
|||
|
## AWS IoT Core Bridge
|
|||
|
##====================================================================
|
|||
|
|
|||
|
##--------------------------------------------------------------------
|
|||
|
## NanoMQ supports multiple aws bridging.
|
|||
|
##
|
|||
|
## Format:
|
|||
|
## aws.bridge.mqtt.{name}.{item} = {value}
|
|||
|
|
|||
|
## aws endpoint
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.host=localhost
|
|||
|
|
|||
|
## aws mqtt port
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.port=8883
|
|||
|
|
|||
|
## Protocol version of the bridge.
|
|||
|
##
|
|||
|
## Value: Enum
|
|||
|
## - 5: mqttv5
|
|||
|
## - 4: mqttv311
|
|||
|
aws.bridge.mqtt.aws.proto_ver=4
|
|||
|
|
|||
|
## Whether to enable bridge mode for mqtt bridge
|
|||
|
##
|
|||
|
## This option is prepared for the mqtt broker which does not
|
|||
|
## support bridge_mode such as the mqtt-plugin of the rabbitmq
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
aws.bridge.mqtt.aws.bridge_mode=false
|
|||
|
|
|||
|
## The ClientId of a remote bridge.
|
|||
|
## Default random string.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.clientid=aws_bridge_client
|
|||
|
|
|||
|
## Ping interval of a down bridge.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 10 seconds
|
|||
|
aws.bridge.mqtt.aws.keepalive=60
|
|||
|
|
|||
|
## The Clean start flag of a remote bridge.
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
## Default: true
|
|||
|
##
|
|||
|
## NOTE: Some IoT platforms require clean_start
|
|||
|
## must be set to 'true'
|
|||
|
aws.bridge.mqtt.aws.clean_start=true
|
|||
|
|
|||
|
## The username for a remote bridge.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
# aws.bridge.mqtt.aws.username=username
|
|||
|
|
|||
|
## The password for a remote bridge.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
# aws.bridge.mqtt.aws.password=passwd
|
|||
|
|
|||
|
## Topics that need to be forward to IoTHUB
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.forwards.1.remote_topic=fwd/topic1
|
|||
|
aws.bridge.mqtt.aws.forwards.1.local_topic=topic1
|
|||
|
|
|||
|
## Override flag for retain
|
|||
|
##
|
|||
|
## Value: Number (0|1|2)
|
|||
|
aws.bridge.mqtt.aws.forwards.1.retain=2
|
|||
|
|
|||
|
## Need to subscribe to remote broker topics
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.subscription.1.remote_topic=cmd/topic1
|
|||
|
aws.bridge.mqtt.aws.subscription.1.local_topic=topic1
|
|||
|
|
|||
|
## Override flag for retain
|
|||
|
##
|
|||
|
## Value: Number (0|1|2)
|
|||
|
aws.bridge.mqtt.aws.subscription.1.retain=2
|
|||
|
|
|||
|
## Need to subscribe to remote topics QoS.
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
aws..mqtt.aws.subscription.1.qos=1
|
|||
|
|
|||
|
## Need to subscribe to remote broker topics
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
aws.bridge.mqtt.aws.subscription.2.remote_topic=cmd/topic2
|
|||
|
aws.bridge.mqtt.aws.subscription.2.local_topic=topic2
|
|||
|
|
|||
|
## Need to subscribe to remote topics QoS.
|
|||
|
##
|
|||
|
## Value: Number
|
|||
|
aws.bridge.mqtt.aws.subscription.2.qos=2
|
|||
|
|
|||
|
## parallel
|
|||
|
## Handle a specified maximum number of outstanding requests
|
|||
|
##
|
|||
|
## Value: 1-infinity
|
|||
|
aws.bridge.mqtt.aws.parallel=2
|
|||
|
|
|||
|
## tls config ##
|
|||
|
|
|||
|
## enable tls
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
aws.bridge.mqtt.aws.tls.enable=true
|
|||
|
|
|||
|
## tls key password
|
|||
|
## String containing the user's password. Only used if the private keyfile
|
|||
|
## is password-protected.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## aws.bridge.mqtt.aws.tls.key_password=yourpass
|
|||
|
|
|||
|
## tls keyfile
|
|||
|
## Path of the file containing the client's private key.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
aws.bridge.mqtt.aws.tls.keyfile=/etc/certs/key.pem
|
|||
|
|
|||
|
## tls cert file
|
|||
|
## Path of the file containing the client certificate.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
aws.bridge.mqtt.aws.tls.certfile=/etc/certs/cert.pem
|
|||
|
|
|||
|
## tls ca cert file
|
|||
|
## Path of the file containing the server's root CA certificate.
|
|||
|
##
|
|||
|
## This certificate is used to identify the AWS IoT server and is publicly
|
|||
|
## available.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
aws.bridge.mqtt.aws.tls.cacertfile=/etc/certs/cacert.pem
|
|||
|
|
|||
|
## A server only does x509-path validation in mode verify_peer,
|
|||
|
## as it then sends a certificate request to the client (this
|
|||
|
## message is not sent if the verify option is verify_none).
|
|||
|
## You can then also want to specify option fail_if_no_peer_cert.
|
|||
|
##
|
|||
|
## Value: true: verify_peer | false: verify_none
|
|||
|
aws.bridge.mqtt.aws.tls.verify_peer=false
|
|||
|
|
|||
|
## Used together with {verify, verify_peer} by an SSL server. If set to true,
|
|||
|
## the server fails if the client does not have a certificate to send, that is,
|
|||
|
## sends an empty certificate.
|
|||
|
##
|
|||
|
## Value: true | false
|
|||
|
aws.bridge.mqtt.aws.tls.fail_if_no_peer_cert=false
|
|||
|
|
|||
|
|
|||
|
##============================================================
|
|||
|
## MQTT Rule Engine
|
|||
|
##============================================================
|
|||
|
|
|||
|
## Rule engine option, when persistence with
|
|||
|
## rule engine, this option is must be ON.
|
|||
|
##
|
|||
|
## Value: ON | OFF
|
|||
|
rule_option=ON
|
|||
|
|
|||
|
## Rule engine plugins option
|
|||
|
## Choose a plugin to enable
|
|||
|
##
|
|||
|
## Value: enable/disable
|
|||
|
rule_option.sqlite=enable
|
|||
|
|
|||
|
## Rule engine plugins option
|
|||
|
## Choose a plugin to enable
|
|||
|
##
|
|||
|
## Value: enable/disable
|
|||
|
rule_option.repub=enable
|
|||
|
|
|||
|
## Rule engine plugins option
|
|||
|
## Choose a plugin to enable
|
|||
|
##
|
|||
|
## Value: enable/disable
|
|||
|
rule_option.mysql=enable
|
|||
|
|
|||
|
|
|||
|
##====================================================================
|
|||
|
## MQTT Rule Engine for Sqlite
|
|||
|
##====================================================================
|
|||
|
|
|||
|
## Hot updatable
|
|||
|
## Rule engine option SQLite3 database path
|
|||
|
## Rule engine db path, default is exec path.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
rule.sqlite.path=/tmp/sqlite_rule.db
|
|||
|
|
|||
|
## Rule engine option SQLite3 database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.1.table=broker
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.event.publish.1.sql="SELECT payload.x.y as y, payload.z as z FROM "#" WHERE y > 10 and z != 'str'"
|
|||
|
|
|||
|
## Rule engine option SQLite3 database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.2.table=broker1
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.event.publish.2.sql="SELECT * FROM "abc""
|
|||
|
|
|||
|
## Rule engine option SQLite3 database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.3.table=broker2
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.sqlite.event.publish.3.sql="SELECT payload, qos FROM "#" WHERE qos > 0"
|
|||
|
|
|||
|
|
|||
|
##====================================================================
|
|||
|
## MQTT Rule Engine for Repub
|
|||
|
##====================================================================
|
|||
|
|
|||
|
## Repub address: host:port .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: mqtt-tcp://127.0.0.1:1883
|
|||
|
rule.repub.1.address=mqtt-tcp://localhost:1883
|
|||
|
|
|||
|
## Repub topic .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: topic/repub
|
|||
|
rule.repub.1.topic=topic/repub1
|
|||
|
|
|||
|
## Protocol version of the Repub.
|
|||
|
##
|
|||
|
## Value: Enum
|
|||
|
## - 5: mqttv5
|
|||
|
## - 4: mqttv311
|
|||
|
## - 3: mqttv31
|
|||
|
rule.repub.1.proto_ver=4
|
|||
|
|
|||
|
## The ClientId of a Repub client.
|
|||
|
## Default random string.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.1.clientid=repub_client1
|
|||
|
|
|||
|
## Ping interval of a Repub client.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 10 seconds
|
|||
|
rule.repub.1.keepalive=60
|
|||
|
|
|||
|
## The Clean start flag of a Repub client.
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
## Default: true
|
|||
|
##
|
|||
|
## NOTE: Some IoT platforms require clean_start
|
|||
|
## must be set to 'true'
|
|||
|
rule.repub.1.clean_start=true
|
|||
|
|
|||
|
## The username for a Repub client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.1.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.1.password=passwd
|
|||
|
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.event.publish.1.sql="SELECT payload.x.y as y, payload.z as z FROM "#" WHERE y > 10 and z != 'str'"
|
|||
|
|
|||
|
|
|||
|
## Repub address: host:port .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: mqtt-tcp://127.0.0.1:1883
|
|||
|
rule.repub.2.address=mqtt-tcp://localhost:1885
|
|||
|
|
|||
|
## Repub topic .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: topic/repub
|
|||
|
rule.repub.2.topic=topic/repub2
|
|||
|
|
|||
|
## Protocol version of the Repub.
|
|||
|
##
|
|||
|
## Value: Enum
|
|||
|
## - 5: mqttv5
|
|||
|
## - 4: mqttv311
|
|||
|
## - 3: mqttv31
|
|||
|
rule.repub.2.proto_ver=4
|
|||
|
|
|||
|
## The ClientId of a Repub client.
|
|||
|
## Default random string.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.2.clientid=repub_client2
|
|||
|
|
|||
|
## Ping interval of a Repub client.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 10 seconds
|
|||
|
rule.repub.2.keepalive=60
|
|||
|
|
|||
|
## The Clean start flag of a Repub client.
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
## Default: true
|
|||
|
##
|
|||
|
## NOTE: Some IoT platforms require clean_start
|
|||
|
## must be set to 'true'
|
|||
|
rule.repub.2.clean_start=true
|
|||
|
|
|||
|
## The username for a Repub client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.2.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.2.password=passwd
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.event.publish.2.sql="SELECT topic, payload FROM "abc""
|
|||
|
|
|||
|
|
|||
|
## Repub address: host:port .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: mqtt-tcp://127.0.0.1:1883
|
|||
|
rule.repub.3.address=mqtt-tcp://broker.emqx.io:1883
|
|||
|
|
|||
|
## Repub topic .
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
## Example: topic/repub
|
|||
|
rule.repub.3.topic=topic/repub3
|
|||
|
|
|||
|
## Protocol version of the Repub.
|
|||
|
##
|
|||
|
## Value: Enum
|
|||
|
## - 5: mqttv5
|
|||
|
## - 4: mqttv311
|
|||
|
## - 3: mqttv31
|
|||
|
rule.repub.3.proto_ver=4
|
|||
|
|
|||
|
## The ClientId of a Repub client.
|
|||
|
## Default random string.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.3.clientid=repub_client3
|
|||
|
|
|||
|
## Ping interval of a Repub client.
|
|||
|
##
|
|||
|
## Value: Duration
|
|||
|
## Default: 10 seconds
|
|||
|
rule.repub.3.keepalive=60
|
|||
|
|
|||
|
## The Clean start flag of a Repub client.
|
|||
|
##
|
|||
|
## Value: boolean
|
|||
|
## Default: true
|
|||
|
##
|
|||
|
## NOTE: Some IoT platforms require clean_start
|
|||
|
## must be set to 'true'
|
|||
|
rule.repub.3.clean_start=true
|
|||
|
|
|||
|
## The username for a Repub client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.3.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.3.password=passwd
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.repub.event.publish.3.sql="SELECT * FROM "#" "
|
|||
|
|
|||
|
|
|||
|
##====================================================================
|
|||
|
## MQTT Rule Engine for Mysql
|
|||
|
##====================================================================
|
|||
|
|
|||
|
## Rule engine option mysql database name
|
|||
|
## Rule engine db path, default is exec path.
|
|||
|
##
|
|||
|
## Value: File
|
|||
|
rule.mysql.name=mysql_rule.db
|
|||
|
|
|||
|
## Rule engine option mysql database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.1.table=broker
|
|||
|
|
|||
|
## The host for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.1.host=localhost
|
|||
|
|
|||
|
## The username for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.1.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.1.password=password
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.event.publish.1.sql="SELECT payload.x.y as y, payload.z as z FROM "#" WHERE y > 10 and z != 'str'"
|
|||
|
|
|||
|
## Rule engine option mysql database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.2.table=broker1
|
|||
|
|
|||
|
## The host for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.2.host=localhost
|
|||
|
|
|||
|
## The username for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.2.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.2.password=password
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.event.publish.2.sql="SELECT * FROM "abc""
|
|||
|
|
|||
|
## Rule engine option mysql database table name
|
|||
|
## Rule engine db table name.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.3.table=broker2
|
|||
|
|
|||
|
## The host for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.3.host=localhost
|
|||
|
|
|||
|
## The username for a mqsql client.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.3.username=username
|
|||
|
|
|||
|
## The password for a Repub.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.3.password=password
|
|||
|
|
|||
|
## Rule engine option sql
|
|||
|
## Rule engine sql clause.
|
|||
|
##
|
|||
|
## Value: String
|
|||
|
rule.mysql.event.publish.3.sql="SELECT payload, qos FROM "#" WHERE qos > 0"
|
|||
|
|
|||
|
|