Skip to content

经典 KV 格式配置说明

此处内容介绍经典 KV 格式配置文件。

基本配置参数

参数名数据类型参数说明
urlString监听 url。
num_taskq_threadUnsigned Integar 32 (Long)任务线程数。
max_taskq_threadUnsigned Integar 32 (Long)最大任务线程数。
parallelLong并行执行的线程数。
property_sizeInteger最大属性长度。
msq_lenInteger队列长度。
qos_durationIntegerQoS 消息定时间隔时间 + 全局定时器最小颗粒度时间。
allow_anonymousBoolean允许匿名登录。
tls.enableBoolean启动 TLS 监听(默认 false)。
tls.urlStringTLS 监听 URL。
tls.keyStringTLS 私钥数据。
tls.keypassStringTLS 私钥密码。
tls.certStringTLS Cert 证书数据。
tls.cacertStringTLS CA 证书数据。
tls.verify_peerBoolean验证客户端证书。
tls.fail_if_no_peer_certBoolean拒绝无证书连接,与tls.verify_peer配合使用。
websocket.enableBoolean启动 websocket 监听(默认 true)。
websocket.urlStringWebsocket 监听 URL。
websocket.tls_urlStringTLS over Websocket 监听 URL。
http_server.enableBoolean启动 Http 服务监听(默认 false)。
http_server.portIntegerHttp 服务端监听端口。
http_server.usernameString访问 Http 服务用户名。
http_server.passwordString访问 Http 服务密码。
http_server.auth_typeEnumHttp 鉴权方式。(默认 basic
http_server.jwt.public.keyfileStringJWT 公钥文件 .
http_server.jwt.private.keyfileStringJWT 私钥文件 .
log.toArray[Enum]日志输出类型数组,使用逗号,分隔多种类型
支持文件,控制台, Syslog 输出,对应参数:
file, console, syslog
log.levelEnum日志等级: trace, debug, info, warn, error, fatal
log.dirString日志文件存储路径 (输出文件时生效)
log.fileString日志文件名(输出文件时生效)
log.rotation.sizeInteger每个日志文件的最大占用空间;
支持单位: `KB
log.rotation.countInteger轮换的最大日志文件数;
默认: 5

标准 MQTT 桥接配置参数

支持多组桥接配置, NAME 为用户定义的桥接组名,不同桥接组名字不可重复 .

参数名数据类型参数说明
bridge.mqtt.{NAME}.bridge_modeBoolean启动桥接功能(默认false不启用)。
bridge.mqtt.{NAME}.addressString桥接目标 broker 地址 URL。
bridge.mqtt.{NAME}.proto_verString桥接客户端 MQTT 版本( 3 | 4 | 5 )。
bridge.mqtt.{NAME}.clientidString桥接客户端 ID (默认 NULL 为自动生成随机 ID)。
bridge.mqtt.{NAME}.keepaliveInteger保活间隔时间。
bridge.mqtt.{NAME}.clean_startBoolean清除会话。
bridge.mqtt.{NAME}.parallelLong桥接客户端并发数。
bridge.mqtt.{NAME}.usernameString登录用户名。
bridge.mqtt.{NAME}.passwordString登录密码。
bridge.mqtt.{NAME}.forwardsArray[String]转发 Topic 数组, 使用逗号,分隔多个Topic
bridge.mqtt.{NAME}.subscription.1.topicString第 1 个订阅Topic
bridge.mqtt.{NAME}.subscription.1.qosInteger第 1 个订阅Qos
bridge.mqtt.{NAME}.subscription.2.topicString第 2 个(以此类推)订阅Topic
bridge.mqtt.{NAME}.subscription.2.qosInteger第 2 个(以此类推)订阅Qos
bridge.mqtt.{NAME}..connector.conn_propertiesObjectConnector 的 MQTT V5 属性(见下表)
bridge.mqtt.{NAME}.connector.ssl.enableBoolean启动 TLS 监听(默认 false)。
bridge.mqtt.{NAME}.connector.ssl.key_passwordStringTLS 私钥密码。
bridge.mqtt.{NAME}.connector.ssl.keyfileStringTLS 私钥数据。
bridge.mqtt.{NAME}.connector.ssl.certfileStringTLS Cert 证书数据。
bridge.mqtt.{NAME}.connector.ssl.cacertfileStringTLS CA 证书数据。
bridge.mqtt.{NAME}.quic_keepaliveDurationQuic 传输层保活时间, (默认 120s )
bridge.mqtt.{NAME}.quic_idle_timeoutDurationQuic 连接最大过期时间 (默认 120s )
bridge.mqtt.{NAME}.quic_discon_timeoutDurationQuic 等待连接 ACK 最大时间 (默认 20s )
bridge.mqtt.{NAME}.quic_handshake_timeoutDurationQUIC 握手最大超时时间(默认 60s )
bridge.mqtt.{NAME}.hybrid_bridgingBoolean混合桥接模式开关,(默认 false 不启用), 如果想最大利用 QUIC ,建议启用
bridge.mqtt.{NAME}.qsend_idle_timeoutDurationQUIC 传输层重置拥塞控制算法的等待超时时间 (默认60 s)
bridge.mqtt.{NAME}.qinitial_rtt_msDuration初始 RTT 预估时间 (默认 800ms)
bridge.mqtt.{NAME}.qmax_ack_delay_msDuration发送 ACK 之前接收数据后等待时长(默认100ms)
bridge.mqtt.{NAME}.quic_qos_priorityBoolean高优先级发送 QOS 1 或 2 的消息(默认 true)
bridge.mqtt.{NAME}.quic_0rttBoolean0RTT 是 QUIC 协议的一个特性,用于快速重新建立连接 (默认 true)
bridge.mqtt.{NAME}.multi_streamBooleanMultiple stream 开关,(默认false不启用
bridge.mqtt.{NAME}.parallelLong桥接客户端并发数。
bridge.mqtt.{NAME}.sub_propertiesObjectSubscription 的 MQTT V5 属性(见下表)
bridge.mqtt.{NAME}.max_send_queue_lenInteger最大发送队列长度
bridge.mqtt.{NAME}.max_recv_queue_lenInteger最大接收队列长度

以 Quic 前缀命名的配置项只针对 QUIC 传输层生效

MQTT V5 属性配置参数

Connector属性:bridge.mqtt.{NAME}.connector.conn_properties

参数名数据类型参数说明
maximum_packet_sizeInteger最大报文长度
Value: 1 ~ 4294967295
receive_maximumInteger接收最大数量
Value: 1 ~ 65535
topic_alias_maximumInteger主题别名最大长度
Value: 0 ~ 65535
request_problem_infomationInteger请求问题信息
Default: 1
Value: 0 | 1
request_response_infomationInteger请求响应信息
Default: 0
Value: 0 | 1
session_expiry_intervalInteger会话过期间隔
Value: 0 ~ 4294967295
user_propertyMap[String, String]用户属性 Map[key(String) - value(String)]*

Subscription属性: bridge.mqtt.{NAME}.sub_properties

参数名数据类型参数说明
identifierInteger订阅标识符
Value: 1 ~ 268,435,455
user_propertyMap[String, String]用户属性
Value: Map[key(String) - value(String)]

Aws IoT Core MQTT 桥接配置参数

参数名数据类型参数说明
bridge.mqtt.bridge_modeBoolean启动桥接功能(默认 false不启用)。
bridge.mqtt.hostStringAWS IoT Core 服务地址。
bridge.mqtt.portIntegerAWS IoT Core MQTT 端口。
bridge.mqtt.clientidString桥接客户端 ID (默认 NULL 为自动生成随机 ID)。
bridge.mqtt.keepaliveInteger保活间隔时间。
bridge.mqtt.clean_startBoolean清除会话。
bridge.mqtt.parallelLong桥接客户端并发数。
bridge.mqtt.usernameString登录用户名。
bridge.mqtt.passwordString登录密码。
bridge.mqtt.forwardsArray[String]转发 Topic 数组, 使用逗号,分隔多个Topic
bridge.mqtt.subscription.1.topicString第 1 个订阅 Topic
bridge.mqtt.subscription.1.qosInteger第 1 个订阅 Qos
bridge.mqtt.subscription.2.topicString第 2 个(以此类推)订阅 Topic
bridge.mqtt.subscription.2.qosInteger第 2 个(以此类推)订阅 Qos

用户登陆验证配置

参数名数据类型参数说明
auth.1.loginString第 1 个登录用户名。
auth.1.passwordString第 1 个登录密码。
auth.2.loginString第 2 个(以此类推)登录用户名。
auth.2.passwordString第 2 个(以此类推)登录密码。

WebHook 配置

参数名数据类型参数说明
web.hook.enableBoolean启动 WebHook (默认: false)
web.hook.urlStringWebhook URL
web.hook.headers.<Any>StringHTTP Headers
Example:
1. web.hook.headers.content-type=application/json
2. web.hook.headers.accept=*
web.hook.body.encoding_of_payload_fieldEnumPayload 编码方式
Options:
plain | base64 | base62
web.hook.ssl.cacertfileStringTLS CA 证书文件.
web.hook.ssl.certfileStringTLS Cert 证书文件
web.hook.ssl.keyfileStringTLS 私钥文件 .
web.hook.ssl.verifyBoolean验证客户端证书。 (默认: false).
web.hook.ssl.server_name_indicationBoolean验证服务端名 (默认: false).
web.hook.pool_sizeInteger连接池大小 (默认: 32 ).
web.hook.rule.client.connack.<No>String示例:
web.hook.rule.client.connack.1={"action": "on_client_connack"}
web.hook.rule.client.disconnected.<No>String示例:
web.hook.rule.client.disconnected.1={"action": "on_client_disconnected"}
web.hook.rule.message.publish.<No>String示例:
web.hook.rule.message.publish.1={"action": "on_message_publish"}
web.hook.rule.message.publish.1={"action": "on_message_publish", "topic": "topic/1/2"}
web.hook.rule.message.publish.2 = {"action": "on_message_publish", "topic": "foo/#"}

HTTP 身份验证配置

参数名数据类型参数说明默认
auth.http.enableBoolean启动 HTTP 认证false
auth.http.auth_req.urlString认证请求的目标 URL。http://127.0.0.1:80/mqtt/auth
auth.http.auth_req.methodEnum认证请求的请求方法。
(POST , GET)
POST
auth.http.auth_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。
auth.http.auth_req.headers.content-type = application/x-www-form-urlencoded
auth.http.auth_req.headers.accept = */*
auth.http.auth_req.paramsString指定认证请求中携带的数据。
, 分隔的 k=v 键值对,v 可以是固定内容,也可以是占位符。
使用 GET 方法时 auth.http.auth_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.auth_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符如下:
%u: 用户名
%c: MQTT Client ID
%a: 客户端的网络 IP 地址
%r: 客户端使用的协议,可以是: mqtt, mqtt-sn, coap, lwm2m 以及 stomp
%P: 密码
%p: 客户端连接的服务端端口
%C: 客户端证书中的 Common Name
%d: 客户端证书中的 Subject
clientid=%c,username=%u,password=%P
auth.http.super_req.urlString指定超级用户认证请求的目标 URL。http://127.0.0.1:80/mqtt/superuser
auth.http.super_req.methodString指定超级用户认证请求的请求方法。
(POST , GET)
POST
auth.http.super_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。auth.http.super_req.headers.content-type = application/x-www-form-urlencoded
auth.http.super_req.headers.accept = */*
auth.http.super_req.paramsString指定超级用户认证请求中携带的数据。
使用 GET 方法时 auth.http.super_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.super_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符同 auth.http.auth_req.params
clientid=%c,username=%u
auth.http.acl_req.urlString指定 ACL 验证请求的目标 URL。http://127.0.0.1:8991/mqtt/acl
auth.http.acl_req.methodString指定 ACL 验证请求的请求方法。(POST , GET)POST
auth.http.acl_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。auth.http.super_req.headers.content-type = application/x-www-form-urlencoded
auth.http.super_req.headers.accept = */*
auth.http.acl_req.paramsString指定 ACL 验证请求中携带的数据。以 , 分隔的 k=v 键值对,v 可以是固定内容,也可以是占位符。
使用 GET 方法时 auth.http.acl_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.acl_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符如下:
%A: 需要验证的权限, 1 表示订阅, 2 表示发布
%u: 用户名
%c: MQTT Client ID
%a: 客户端的网络 IP 地址
%r: 客户端使用的协议,可以是: mqtt, mqtt-sn, coap, lwm2m 以及 stomp
%m: 挂载点
%t: 主题
access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t,mountpoint=%m
auth.http.timeoutIntegerHTTP 请求超时时间。任何等价于 0s 的设定值都表示永不超时。5s
auth.http.connect_timeoutIntegerHTTP 请求的连接超时时间。任何等价于 0s 的设定值都表示永不超时。5s
auth.http.ssl.cacertfileStringCA 证书文件路径。etc/certs/ca.pem
auth.http.ssl.certfileString客户端证书文件路径。etc/certs/client-cert.pem
auth.http.ssl.keyfileString客户端私钥文件路径。etc/certs/client.key.pem

规则引擎配置

参数名数据类型参数说明
rule_optionEnum规则引擎开关, 当时用规则引擎进行持久化,必须设置该选项为 ON。
rule_option.sqliteEnum规则引擎插件开关 (enable/disable)
rule_option.repubEnum规则引擎 repub 选项 (enable/disable)
rule_option.mysqlEnum规则引擎 mysql 选项 (enable/disable)

SQLite 规则配置

参数名数据类型参数说明
rule.sqlite.pathString规则引擎 SQLite3 数据库路径, 默认是 /tmp/rule_engine.db
rule.sqlite.%d.tableString规则引擎 SQLite3 数据库表名, '%d' 是占位符
rule.sqlite.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符

MySQL 规则配置

参数名数据类型参数说明
rule.mysql.nameString规则引擎 mysql 数据库名字, 默认是 mysql_rule_db
rule.mysql.%d.tableString规则引擎 mysql 数据库表名字, '%d' 是占位符
rule.mysql.%d.hostString规则引擎 mysql 数据库主机名 '%d' 是占位符
rule.mysql.%d.usernameString规则引擎 mysql 数据库用户名, '%d' 是占位符
rule.mysql.%d.passwordString规则引擎 mysql 数据库密码, '%d' 是占位符
rule.mysql.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符

Repub 规则配置

参数名数据类型参数说明
rule.repub.%d.addressString规则引擎重新发布地址 (mqtt-tcp://host:port), '%d' 是占位符
rule.repub.%d.topicString规则引擎重新发布主题, '%d' 是占位符
rule.repub.%d.usernameString规则引擎重新发布用户名, '%d' 是占位符
rule.repub.%d.passwordString规则引擎重新发布密码, '%d' 是占位符
rule.repub.%d.proto_verInteger规则引擎重新发布协议版本, 默认是 4, '%d' 是占位符
rule.repub.%d.clientidString规则引擎重新发布客户端标识符, '%d' 是占位符
rule.repub.%d.keepaliveInteger规则引擎重新发布保活时间, 默认值是 60, '%d' 是占位符
rule.repub.%d.clean_startBoolean规则引擎重新发布 clean_start 标志, 默认是 true ,'%d' 是占位符
rule.repub.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符