配置手册
listeners
类型 Struct(listeners)
tcp
类型 Map($name->OneOf(Struct(mqtt_tcp_listener),String("marked_for_deletion")))
描述 TCP 监听器。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。
将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。
例如,如果客户机 A 使用
listeners.tcp.<name>.mountpoint
设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息设置为
""
以禁用该功能mountpoint 字符串中的变量:
${clientid}
: clientid${username}
: username
tcp_options
类型 Struct(tcp_opts)
send_timeout
类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark
类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive
类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
ssl
类型 Map($name->OneOf(Struct(mqtt_ssl_listener),String("marked_for_deletion")))
描述 SSL 监听器。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。
将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。
例如,如果客户机 A 使用
listeners.tcp.<name>.mountpoint
设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息设置为
""
以禁用该功能mountpoint 字符串中的变量:
${clientid}
: clientid${username}
: username
tcp_options
类型 Struct(tcp_opts)
send_timeout
类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark
类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive
类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
ssl_options
类型 Struct(listener_ssl_opts)
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ws
类型 Map($name->OneOf(Struct(mqtt_ws_listener),String("marked_for_deletion")))
描述 HTTP websocket 监听器。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。
将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。
例如,如果客户机 A 使用
listeners.tcp.<name>.mountpoint
设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息设置为
""
以禁用该功能mountpoint 字符串中的变量:
${clientid}
: clientid${username}
: username
tcp_options
类型 Struct(tcp_opts)
send_timeout
类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark
类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive
类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
wss
类型 Map($name->OneOf(Struct(mqtt_wss_listener),String("marked_for_deletion")))
描述 HTTPS websocket 监听器。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。
将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。
例如,如果客户机 A 使用
listeners.tcp.<name>.mountpoint
设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息设置为
""
以禁用该功能mountpoint 字符串中的变量:
${clientid}
: clientid${username}
: username
tcp_options
类型 Struct(tcp_opts)
send_timeout
类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark
类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive
类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
ssl_options
类型 Struct(listener_wss_opts)
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
quic
类型 Map($name->OneOf(Struct(mqtt_quic_listener),String("marked_for_deletion")))
描述 QUIC 监听器。
ciphers
类型 Array(String)
默认值 [TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式。
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3。
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
注:QUIC 监听器只支持 tlsv1.3 的 ciphers。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,请在所有主题前面加上 mountpoint 字符串。
将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。
例如,如果客户机 A 使用
listeners.tcp.<name>.mountpoint
设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息设置为
""
以禁用该功能mountpoint 字符串中的变量:
${clientid}
: clientid${username}
: username
mqtt
类型 Struct(mqtt)
描述 全局的 MQTT 配置项。 mqtt 下所有的配置作为全局的默认值存在,它可以被
zone
中的配置覆盖shared_subscription_strategy
类型 Enum(random,round_robin,round_robin_per_group,sticky,local,hash_topic,hash_clientid)
默认值 round_robin
描述 共享订阅的分发策略。
- random:随机选择一个订阅者进行分发;
- round_robin:共享订阅组内的客户端将循环消费消息,循环进度独立记录在每个发布端中,所以前后两条来自 不同发布端 的消息可能被订阅组内的同一个客户端消费;
- round_robin_per_group:共享订阅组内的客户端将循环消费消息,循环进度独立记录在每个节点中,所以前后两条来自 不同节点 的消息可能被订阅组内的同一个客户端消费;
- local:随机选择当前节点上的一个订阅者,如果当前节点没有订阅者,则在集群内随机选择;
- sticky:持续将消息分发给最初选择的订阅者,直到他们的会话结束;
- hash_clientid:哈希发布者的客户端 ID 以选择订阅者;
- hash_topic:哈希发布主题以选择订阅者。
keepalive_check_interval
类型 Duration
默认值 "30s"
描述 检查传入 MQTT 数据包的频率决定了服务器检查新 MQTT 数据包的频率。 如果一段时间内未从客户端收到任何数据包,则该时间会累积。 一旦累积时间超过
keepalive-interval * keepalive-multiplier
,连接将被终止。 默认设置为 30 秒,最小值为 1 秒,最大值为keepalive-interval / 2
。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。client_attrs_init
类型 Array(Struct(client_attrs_init))
默认值 []
描述 指定如何初始化客户端属性。每个属性可被初始化为
client_attrs.{NAME}
,其中{NAME}
是在配置字段set_as_attr
中指定的属性名称。初始化的客户端属性将以指定的名称存储在client_attrs
属性中。然后,它们可以在身份验证和授权过程的模板中用作占位符。例如,当set_as_attr = alias
时,使用${client_attrs.alias}
来渲染 HTTP POST 请求体,或者渲染监听器配置moutpoint = devices/${client_attrs.alias}/
来初始化每个客户端独有的主题命名空间。expression
类型 String
描述 单行表达式,用于求值一组预定义的字符串函数(类似规则引擎 SQL 语句中的函数)。 表达式可以是带有嵌套调用的函数调用,或直接变量引用。 目前,它不提供用户定义的变量绑定(如
var a=1
)或用户定义的函数。 例如,提取以点分隔的客户端 ID 的前缀:nth(1, tokens(clientid, '.'))
。预绑定的变量包括:
cn
: 客户端 TLS 证书的常用名称。dn
: 客户端 TLS 证书的专有名称(主题)。clientid
: MQTT 客户端 ID。username
: MQTT 客户端的用户名。user_property.{NAME}
: CONNECT 包中的用户属性。
您可以在 EMQX 文档中了解更多关于各种表达式的信息。
await_rel_timeout
类型 Duration
默认值 "300s"
描述 客户端发布 QoS 2 消息时,服务器等待
PUBREL
的最长时延。超过该时长后服务器会放弃等待,该 PACKET ID 会被释放,从而允许后续新的 PUBLISH 消息使用。如果超时后收到 PUBREL,服务器将会产生一条告警日志。注意,向订阅客户端转发消息的动作发生在进入等待之前。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
authentication
类型 Array(OneOf(Struct(builtin_db),Struct(mysql),Struct(postgresql),Struct(mongo_single),Struct(mongo_rs),Struct(mongo_sharded),Struct(redis_single),Struct(redis_cluster),Struct(redis_sentinel),Struct(http_get),Struct(http_post),Struct(jwt_hmac),Struct(jwt_public_key),Struct(jwt_jwks),Struct(scram),Struct(ldap),Struct(ldap_deprecated)))
默认值 []
描述 默认的 MQTT 监听器的全局认证配置。
有关每个监听器的单独配置,请参阅监听器配置中的
authentication
。此选项可配置为:
[]
: 默认值,允许 *所有* 登录- one: 例如
{enable:true,backend:"built_in_database",mechanism="password_based"}
- chain: 结构体数组。
当配置了一个认证链时,登录凭据将按照配置的顺序检查后端,直到可以做出'允许'或'拒绝'的决定。
如果在完全遍历认证链之后没有决定,登录将被拒绝。
bootstrap_type
类型 Enum(hash,plain)
默认值 plain
描述 指定引导文件包含的数据字段。
-
plain
:- 所需数据字段:
user_id
、password
、is_superuser
user_id
:可以是客户端 ID 或用户名,取决于内置数据库认证的user_id_type
配置。password
:用户的明文密码。is_superuser
:布尔值,用户的管理员权限状态。
- 所需数据字段:
-
hash
:- 所需数据字段:
user_id
、password_hash
、salt
、is_superuser
- 类似于
plain
类型的定义,增加了password_hash
和salt
以提升安全性。
- 所需数据字段:
内容可以是 CSV 或 JSON 格式。
以下是 CSV 示例:
user_id,password_hash,salt,is_superuser\nmy_user,b6c743545a7817ae8c8f624371d5f5f0373234bb0ff36b8ffbf19bce0e06ab75,de1024f462fb83910fd13151bd4bd235,true
JSON 内容应解码为对象数组,例如:
[{"user_id": "my_user","password": "s3cr3tp@ssw0rd","is_superuser": true}]
。password_hash
的哈希字符串取决于内置数据库认证机制配置的password_hash_algorithm
。例如,如果配置为password_hash_algorithm {name = sha256, salt_position = suffix}
,则在哈希之前将盐附加到密码。以下是等效的 Python 表达式:hashlib.sha256(password + salt).hexdigest()
。-
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
verify_claims
类型 Map
默认值 []
描述 需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:
${username}
: 将在运行时被替换为客户端连接时使用的用户名${clientid}
: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与verify_claims
中要求的内容是否匹配。
verify_claims
类型 Map
默认值 []
描述 需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:
${username}
: 将在运行时被替换为客户端连接时使用的用户名${clientid}
: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与verify_claims
中要求的内容是否匹配。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 SSL 选项。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
verify_claims
类型 Map
默认值 []
描述 需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:
${username}
: 将在运行时被替换为客户端连接时使用的用户名${clientid}
: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与verify_claims
中要求的内容是否匹配。
ssl
类型 Struct(ssl)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
authorization
类型 Struct(authorization)
描述 授权(ACL)。EMQX 支持完整的客户端访问控制(ACL)。
sources
类型 Array(OneOf(Struct(file),Struct(builtin_db),Struct(http_get),Struct(http_post),Struct(redis_single),Struct(redis_sentinel),Struct(redis_cluster),Struct(mysql),Struct(postgresql),Struct(mongo_single),Struct(mongo_rs),Struct(mongo_sharded),Struct(ldap)))
默认值 [{enable = true, path = "${EMQX_ETC_DIR}/acl.conf", type = file}]
描述
授权(ACL)数据提供者的数组。 它被设计为一个数组,而不是哈希映射,因此可以 将源按顺序排列形成访问控制链。
在授权 '发布' 或 '订阅' 操作时,配置的 源会按顺序检查。在检查 ACL 源时, 如果未找到客户端(通过用户名或客户端 ID 标识), 则继续检查下一个源。一旦返回 '允许' 或 '拒绝' 决定, 立即停止检查。
如果在任何源中都未找到客户端, 则应用 'authorization.no_match' 中配置的默认操作。
注意: 源元素由它们的 '类型' 标识。 不允许配置两个或更多相同类型的源。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
topology
类型 Struct(topology)
heartbeat_frequency_ms
类型 Duration
默认值 "200s"
描述 控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
ssl
类型 Struct(ssl)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
cluster
类型 Struct(cluster)
etcd
类型 Struct(cluster_etcd)
ssl_options
别名 ssl 类型 Struct(ssl_client_opts)
描述 当使用 TLS 连接 etcd 时的配置选项。 当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
log
类型 Struct(log)
描述 EMQX 支持两种主要的日志处理进程:file 和 console,另有一个专门设计用于始终将日志定向到文件的 audit 处理进程。 系统的默认日志处理行为可以通过环境变量
EMQX_DEFAULT_LOG_HANDLER
配置,它接受以下设置:- file:将日志输出仅定向到文件。
- console:将日志输出仅定向到控制台。
值得注意的是,当通过 systemd 的 emqx.service 文件启动 EMQX 时,EMQX_DEFAULT_LOG_HANDLER 被设置为 file。 在 systemd 启动之外的场景中,console 作为默认的日志处理进程。
throttling
类型 Struct(log_throttling)
time_window
类型 Duration(s)
默认值 "1m"
描述 此配置设置控制限流消息的日志记录行为,包括但不限于像 'authorization_permission_denied' 这样的消息。 在每个定义的时间窗口内,只有一个限流消息的实例会被记录,以防止日志泛滥。 在每个时间窗口结束时,将生成一个摘要日志,详细说明该期间内任何限流消息的发生。 重要的是,此设置的最短有效时间窗口为 1 秒(1s)。 如果指定的值低于 1s,则会自动调整为 1s。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
rpc
类型 Struct(rpc)
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
force_shutdown
类型 Struct(force_shutdown)
max_heap_size
类型 Bytesize
默认值 "32MB"
描述 进程的最大堆大小,如果启用了 force_shutdown 功能,那么超过此限制的进程将主动退出或被强制 kill。进程消息队列(邮箱)中的消息也是堆的一部分。进程的关闭分为以下两种情况:
- 进程在自己运行间隙主动检查当前堆大小,发现超过限制后主动退出。
- 底层调度系统为进程执行垃圾回收后检查当前堆大小,发现超过限制后强制 kill 该进程。
注:以上两者产生的 Error 日志也会有所不同,前者产生的日志类似于...errorContext: connection_shutdown, reason: #{max => 2097152, reason => proc_heap_too_large, value => 2787348}..
,后者产生的日志类似于...Context: maximum heap size reached...
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。
connectors
类型 Struct(connectors)
http
类型 Map($name->Struct(config_connector))
描述 HTTP Connector Config
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
mqtt
类型 Map($name->Struct(config_connector))
描述 MQTT Connector Config
retry_interval
类型 String
默认值 "15s"
描述 Message retry interval. Delay for the MQTT bridge to retry sending the QoS1/QoS2 messages in case of ACK not received. Time interval is a string that contains a number followed by time unit:
-ms
for milliseconds,s
for seconds,m
for minutes,h
for hours;
or combination of whereof:1h5m0s
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
elasticsearch
类型 Map($name->Struct(config))
描述 ElasticSearch Connector Config
ssl
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 启用 SSL 连接。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
retainer
类型 Struct(retainer)
msg_expiry_interval
类型 Duration
默认值 "0s"
描述 过期的保留消息将不会再被投递,设置为 0 则表示保留消息永不过期。但如果 MQTT 消息中指定了
Message-Expiry-Interval
属性,则以该属性的值为准。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。msg_clear_interval
类型 Duration
默认值 "0s"
描述 检查并清除过期保留消息的时间间隔。这可以避免已经过期的保留消息仍然被长时间地存储。
如果msg_clear_interval
设置为 0,即不主动定期检查过期的保留消息,EMQX 将只在准备投递时检查并删除已经过期的保留消息。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。backend
类型 Struct(mnesia_config)
描述 保留消息的存储后端。
index_specs
类型 Array(Integer)
默认值 [[1, 2, 3], [1, 3], [2, 3], [3]]
描述 Retainer index specifications: list of arrays of positive ascending integers. Each array specifies an index. Numbers in an index specification are 1-based word positions in topics. Words from specified positions will be used for indexing.
For example, it is good to have[2, 4]
index to optimize+/X/+/Y/...
topic wildcard subscriptions.
dashboard
类型 Struct(dashboard)
listeners
类型 Struct(listeners)
描述 Dashboard 监听器设置。监听器必须有唯一的端口号和 IP 地址的组合。 例如,可以通过指定 IP 地址 0.0.0.0 来监听机器上给定端口上的所有配置的 IP 地址。 或者,可以为每个监听器指定唯一的 IP 地址,但使用相同的端口。
https
类型 Struct(https)
描述 SSL listeners
ssl_options
类型 Struct(ssl_options)
描述 Dashboard 监听器的 SSL/TLS 选项。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
gateway
类型 Struct(gateway)
coap
类型 Struct(coap)
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
listeners
类型 Struct(udp_listeners)
udp
类型 Map($name->Struct(udp_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls
类型 Map($name->Struct(dtls_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls_options
类型 Struct(dtls_opts)
描述 DTLS Socket 配置
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
idle_timeout
类型 Duration
默认值 "30s"
描述 客户端连接过程的空闲时间。该配置用于:
- 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
- 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
exproto
类型 Struct(exproto)
server
类型 Struct(exproto_grpc_server)
描述 配置 ExProto 网关需要启动的
ConnectionAdapter
服务。 该服务用于提供客户端的认证、发布、订阅和数据下行等功能。ssl_options
类型 Struct(ssl_server_opts)
描述 服务 SSL 配置。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
handler
类型 Struct(exproto_grpc_handler)
描述 配置 ExProto 网关需要请求的
ConnectionHandler
服务地址。 该服务用于给 ExProto 提供客户端的 Socket 事件处理、字节解码、订阅消息接收等功能。service_name
类型 OneOf(String("ConnectionHandler"),String("ConnectionUnaryHandler"))
默认值 ConnectionUnaryHandler
描述 用于处理连接事件的服务名称 在初始版本中,我们期望使用流来提高 ConnectionHandler 中请求的效率。 但不幸的是,不同流之间的事件顺序混乱。 这导致 OnSocketCreated 事件可能会 在 OnReceivedBytes 之后到达。 因此,自 v5.0.25 起,我们添加了
ConnectionUnaryHandler
服务,并强制在其中使用了 Unary,以避免顺序问题。ssl_options
类型 Struct(ssl_client_opts)
描述 gRPC 客户端的 SSL 配置。
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
listeners
类型 Struct(tcp_udp_listeners)
tcp
类型 Map($name->Struct(tcp_listener))
描述 从监听器名称到配置参数的映射。
tcp_options
类型 Struct(tcp_opts)
描述 TCP Socket 配置。
send_timeout 类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark 类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive 类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
ssl
类型 Map($name->Struct(ssl_listener))
描述 从监听器名称到配置参数的映射。
tcp_options
类型 Struct(tcp_opts)
描述 TCP Socket 配置。
send_timeout 类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark 类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive 类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
ssl_options
类型 Struct(listener_ssl_opts)
描述 SSL Socket 配置。
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
udp
类型 Map($name->Struct(udp_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls
类型 Map($name->Struct(dtls_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls_options
类型 Struct(dtls_opts)
描述 DTLS Socket 配置
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
idle_timeout
类型 Duration
默认值 "30s"
描述 客户端连接过程的空闲时间。该配置用于:
- 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
- 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
lwm2m
类型 Struct(lwm2m)
qmode_time_window
类型 Duration(s)
默认值 "22s"
描述 在 QMode 模式下,LwM2M 网关认为网络链接有效的时间窗口的值。 例如,在收到客户端的更新信息后,在这个时间窗口内的任何信息都会直接发送到 LwM2M 客户端,而超过这个时间窗口的所有信息都会暂时储存在内存中。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。mountpoint
类型 String
默认值 "lwm2m/${endpoint_name}/"
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
listeners
类型 Struct(udp_listeners)
udp
类型 Map($name->Struct(udp_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls
类型 Map($name->Struct(dtls_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls_options
类型 Struct(dtls_opts)
描述 DTLS Socket 配置
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
idle_timeout
类型 Duration
默认值 "30s"
描述 客户端连接过程的空闲时间。该配置用于:
- 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
- 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
mqttsn
类型 Struct(mqttsn)
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
listeners
类型 Struct(udp_listeners)
udp
类型 Map($name->Struct(udp_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls
类型 Map($name->Struct(dtls_listener))
描述 从监听器名称到配置参数的映射。
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
dtls_options
类型 Struct(dtls_opts)
描述 DTLS Socket 配置
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
idle_timeout
类型 Duration
默认值 "30s"
描述 客户端连接过程的空闲时间。该配置用于:
- 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
- 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
stomp
类型 Struct(stomp)
mountpoint
类型 String
默认值 ""
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
listeners
类型 Struct(tcp_listeners)
tcp
类型 Map($name->Struct(tcp_listener))
描述 从监听器名称到配置参数的映射。
tcp_options
类型 Struct(tcp_opts)
描述 TCP Socket 配置。
send_timeout 类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark 类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive 类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
ssl
类型 Map($name->Struct(ssl_listener))
描述 从监听器名称到配置参数的映射。
tcp_options
类型 Struct(tcp_opts)
描述 TCP Socket 配置。
send_timeout 类型 Duration
默认值 "15s"
描述 进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由high_watermark
指定)降至低水位线(默认为 4KB)。
因此(high_watermark - 4KB) / send_timeout
必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。high_watermark 类型 Bytesize
默认值 "1MB"
描述 当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
如果该内部缓冲区中排队的数据量超过了high_watermark
,对应的套接字就会被标记为繁忙。
繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过send_timeout
。
套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
进程挂起期间,进程的消息队列可能发生堆积,详见max_mailbox_len
。
表示字节数量的字符串,例如:10B
、640kb
、4MB
、1GB
。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。keepalive 类型 String
默认值 none
描述 为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'
- Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
- Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
- Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
mountpoint
类型 String
描述 发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在
listeners.tcp.\<name>.mountpoint
设置为some_tenant
的情况下订阅t
, 则客户端实际上订阅了some_tenant/t
主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题t
发送消息, 则该消息被路由到所有订阅了some_tenant/t
的客户端,因此客户端 A 将收到该消息,带有 主题名称t
。 设置为""
以禁用该功能。 挂载点字符串中可用的变量:${clientid}
:clientid${username}
:用户名
ssl_options
类型 Struct(listener_ssl_opts)
描述 SSL Socket 配置。
ciphers 类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after 类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
idle_timeout
类型 Duration
默认值 "30s"
描述 客户端连接过程的空闲时间。该配置用于:
- 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
- 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
exhook
类型 Struct(exhook)
servers
类型 Array(Struct(server))
默认值 []
描述 ExHook 服务器列表
ssl
类型 Struct(ssl_conf)
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。
slow_subs
类型 Struct(slow_subs)
stats_type
类型 Enum(whole,internal,response)
默认值 whole
描述 消息时延的计算方式:
- whole:从消息到达 EMQX(EMQX 从接收缓冲区取得消息)开始,到消息完成传输的时间。
- internal:从消息到达 EMQX(EMQX 从接收缓冲区取得消息)开始,到消息开始投递(EMQX 尝试向发送缓冲区写入消息)的时间。
- response:从消息开始投递开始,到消息完成传输的时间。
注:消息完成传输时间指的是 QoS 1、2 消息完成 MQTT 报文响应流程时间,即 QoS 1 消息收到 PUBACK 报文,QoS 2 消息收到 PUBCOMP 报文的时间。QoS 0 消息由于无响应报文,所以 QoS 0 消息的完成传输时间均以消息开始投递时间代替。因此使用 response 方式统计时延时,QoS 0 消息的时延将永远等于 0。
opentelemetry
类型 Struct(opentelemetry)
exporter
类型 Struct(otel_exporter)
描述 Open Telemetry 导出器
ssl_options
类型 Struct(ssl_client_opts)
默认值 {enable = false}
描述 Open Telemetry 导出器的 SSL 配置
ciphers
类型 Array(String)
默认值 []
描述 此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如
"TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
或["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
。
密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
注意:某些密码套件仅与特定的 TLS版本
兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。例如,如果只有
versions
仅配置为tlsv1.3
。为其他版本配置密码套件将无效。
注:PSK 的 Ciphers 不支持 tlsv1.3
如果打算使用 PSK 密码套件,tlsv1.3
应在ssl.versions
中禁用。
PSK 密码套件:"RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
hibernate_after
类型 Duration
默认值 "5s"
描述 指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
表示时间长度的字符串,例如:10s
、2.5m
、1h30m
、1W2D
或2345ms
,其中ms
是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
例如将一个类型为Duration(s)
的配置项设置为1200ms
,最终生效的时间长度将是1s
而不是1.2s
。
Duration
等价于Duration(ms)
。单位部分不区分大小写。