zone.external.idle_timeout
## Value: duration zone.external.idle_timeout = 15s
说明:TCP 连接建立后的发呆时间,如果这段时间内未收到任何报文,则会关闭该连接。
zone.external.enable_acl
## Value: Flag zone.external.enable_acl = on
说明:是否开启 ACL 检查。
zone.external.enable_ban
## Value: Flag zone.external.enable_ban = on
说明:是否开启黑名单。
zone.external.enable_stats
## Value: on | off zone.external.enable_stats = on
说明:是否开启客户端状态统计。
zone.external.acl_deny_action
## Value: ignore | disconnect ## Default: ignore zone.external.acl_deny_action = ignore
说明:ACL 检查失败后,执行的操作。
ignore
:不做任何操作。disconnect
:断开连接。
zone.external.force_gc_policy
## Numbers delimited by `|'. Zero or negative is to disable. zone.external.force_gc_policy = 16000|16MB
说明:当收到一定数量的消息,或字节,就强制执行一次垃圾回收。
格式:<Number>|<Bytes>
。
例如,16000|16MB
表示当收到 16000
条消息,或 16MB
的字节流入就强制执行一次垃圾回收。
zone.external.force_shutdown_policy
## Default: ## - 10000|64MB on ARCH_64 system ## - 1000|32MB on ARCH_32 sytem #zone.external.force_shutdown_policy = 10000|64MB
说明:当进程消息队列长度,或占用的内存字节到达某值,就强制关闭该进程。
这里的 消息队列
指的是 Erlang 进程的 消息邮箱
,并非 QoS 1 和 QoS 2 的 mqueue
。
格式:<Number>|<Bytes>
。
例如,32000|32MB
表示当进程堆积了 32000
条消息,或进程占用内存达到 32MB
则关闭该进程。
zone.external.max_packet_size
## Value: Bytes ## Default: 1MB ## zone.external.max_packet_size = 64KB
说明:允许的 MQTT 报文最大长度。
zone.external.max_clientid_len
## Value: Number [23-65535] ## zone.external.max_clientid_len = 1024
说明:允许的 Client ID 串的最大长度。
zone.external.max_topic_levels
## Value: Number [0-65535] ## zone.external.max_topic_levels = 7
说明:允许客户端订阅主题的最大层级。0 表示不限制。
警告:Topic层级过多可能导致订阅时的性能问题
zone.external.max_qos_allowed
## Value: 0 | 1 | 2 ## zone.external.max_qos_allowed = 2
说明:允许客户端发布的最大 QoS 等级。
zone.external.max_topic_alias
## Value: 0-65535 ## zone.external.max_topic_alias = 65535
说明:允许最大的主题别名数。0 表示不支持主题别名。
zone.external.retain_available
## Value: boolean ## zone.external.retain_available = true
说明:是否支持 Retain 消息。
zone.external.wildcard_subscription
## Value: boolean ## zone.external.wildcard_subscription = false
说明:是否支持订阅通配主题。
zone.external.shared_subscription
## Value: boolean ## zone.external.shared_subscription = false
说明:是否支持共享订阅。
zone.external.server_keepalive
## Value: Number ## zone.external.server_keepalive = 0
说明:服务端指定的 Keepalive 时间。用于 MQTT v5.0 协议的 CONNACK 报文。
zone.external.keepalive_backoff
## Value: Float > 0.5 zone.external.keepalive_backoff = 0.75
说明:Keepalive 退避指数。EMQX 如果在 Keepalive * backoff * 2
的时间内未收到客户端的任何数据报文,则认为客户端已心跳超时。
zone.external.max_subscriptions
## Value: Number zone.external.max_subscriptions = 0
说明:单个客户端允许订阅的最大主题数。0
表示不限制。
zone.external.upgrade_qos
## Value: on | off zone.external.upgrade_qos = off
说明:允许 EMQX 在投递消息时,强制升级消息的 QoS 等级为订阅的 QoS 等级。
zone.external.max_inflight
## Value: Number zone.external.max_inflight = 32
说明:飞行窗口大小。飞行窗口用于存储未被应答的 QoS 1 和 QoS 2 消息。
zone.external.retry_interval
## Value: Duration zone.external.retry_interval = 30s
说明:消息重发间隔。EMQX 在每个间隔检查是否需要进行消息重发。
zone.external.max_awaiting_rel
## Value: Number zone.external.max_awaiting_rel = 100
说明:QoS 2 消息的最大接收窗口,配置 EMQX 能够同时处理多少从客户端发来的 QoS 2 消息。0
表示不限制。
zone.external.await_rel_timeout
## Value: Duration zone.external.await_rel_timeout = 300s
说明:QoS 2 消息处理超时时间,在超时后若还未收到 QoS 的 PUBREL 报文,则将消息从接收窗口中丢弃。
zone.external.session_expiry_interval
## Value: Duration ## -d: day ## -h: hour ## -m: minute ## -s: second ## ## Default: 2h, 2 hours zone.external.session_expiry_interval = 2h
说明:会话默认超时时间,主要用于 MQTT v3.1 和 v3.1.1 协议。在 MQTT v5.0 中,该值通常会携带在客户端的连接报文中。
zone.external.max_mqueue_len
## Value: Number >= 0 zone.external.max_mqueue_len = 1000
说明:消息队列最大长度。当飞行窗口满,或客户端离线后,消息会被存储至该队列中。0 表示不限制。
zone.external.mqueue_priorities
## Priority number [1-255] ## Example: topic/1=10,topic/2=8 ## NOTE: comma and equal signs are not allowed for priority topic names ## NOTE: messages for topics not in the priority table are treated as ## either highest or lowest priority depending on the configured ## value for mqueue_default_priority ## zone.external.mqueue_priorities = none
说明:队列消息优先级配置:
none
:表示无优先级区分。<Spec>
:表示为一个消息优先表,它配置了某主题下消息的优先级。例如:
topic/1=10
:表示主题topic/1
的消息优先级为10
。topic/1=10,topic/2=8
:表示配置了两个主题的优先级,其分别为10
和8
。其中,优先级数值越高,优先等级越高。
当消息队列长度有限时,会优先丢弃低优先级的消息。
zone.external.mqueue_default_priority
## Value: highest | lowest zone.external.mqueue_default_priority = highest
说明:消息默认的优先等级。
zone.external.mqueue_store_qos0
## Value: false | true zone.external.mqueue_store_qos0 = true
说明:消息队列是否存储 QoS 0 消息。
zone.external.enable_flapping_detect
## Value: on | off zone.external.enable_flapping_detect = off
说明:是否开启 Flapping
检查。
zone.external.rate_limit.conn_messages_in
## Value: Number,Duration ## Example: 100 messages per 10 seconds. #zone.external.rate_limit.conn_messages_in = 100,10s
说明:单连接上允许的最大发布速率 (msg/s)
zone.external.rate_limit.conn_bytes_in
## Value: Number,Duration ## Example: 100KB incoming per 10 seconds. #zone.external.rate_limit.conn_bytes_in = 100KB,10s
说明:单连接上允许的最大报文速率 (bytes/s)
zone.external.conn_congestion.alarm
## Default: off #zone.external.conn_congestion.alarm = off
说明:是否对拥塞的连接发出警报
zone.external.conn_congestion.min_alarm_sustain_duration
## Default: 1m #zone.external.conn_congestion.min_alarm_sustain_duration = 1m
说明:无法清除拥塞警报的时间
注:只有当队列中没有挂起的字节时,报警才会被清除;这是为了避免太频繁地清除和发送警报。
zone.external.quota.conn_messages_routing
## Example: 100 messaegs per 1s #zone.external.quota.conn_messages_routing = 100,1s
说明:单个连接上的消息配额
zone.external.quota.overall_messages_routing
## Value: Number, Duration ## ## Example: 200000 messaegs per 1s #zone.external.quota.overall_messages_routing = 200000,1s
说明:所有连接上的消息配额
zone.external.mountpoint
## Variables in mountpoint path: ## - %c: clientid ## - %u: username ## ## Value: String ## zone.external.mountpoint = devicebound/
说明:主题挂载点(启动此配置,所有主题都将以挂载点路径作为前缀)
zone.external.use_username_as_clientid
## Value: boolean ## Default: false zone.external.use_username_as_clientid = false
说明:是否用客户端的 Username 作为其 Client ID。
zone.external.ignore_loop_deliver
## Value: true | false zone.external.ignore_loop_deliver = false
说明:是否忽略自己发送的消息。如果忽略,则表明 EMQX 不会向消息的发送端投递此消息。
zone.external.strict_mode
## Value: true | false zone.external.strict_mode = false
说明:是否开启严格检查模式。严格检查模式会更细致的检查 MQTT 报文的正确性。
zone.external.response_information
## Value: String ## zone.external.response_information = example
说明:指定返回给客户端的响应信息
zone.internal.allow_anonymous
zone.internal.allow_anonymous = true
说明:是否允许匿名用户登录系统。
zone.internal.enable_stats
## Value: Flag zone.internal.enable_stats = on
说明:是否开启客户端状态统计。
zone.internal.enable_acl
## Value: Flag zone.internal.enable_acl = off
说明:是否开启 ACL 检查。
zone.internal.acl_deny_action
## Value: ignore | disconnect ## Default: ignore zone.internal.acl_deny_action = ignore
说明:ACL 检查失败后,执行的操作。
ignore
:不做任何操作。disconnect
:断开连接。
zone.internal.force_gc_policy
## See zone.$name.force_gc_policy ## zone.internal.force_gc_policy = 128000|128MB
说明:当收到一定数量的消息,或字节,就强制执行一次垃圾回收。
格式:<Number>|<Bytes>
。
例如,16000|16MB
表示当收到 16000
条消息,或 16MB
的字节流入就强制执行一次垃圾回收。
zone.internal.wildcard_subscription
## Value: boolean ## zone.internal.wildcard_subscription = true
说明:是否支持订阅通配主题。
zone.internal.shared_subscription
## Value: boolean ## zone.internal.shared_subscription = true
说明:是否支持共享订阅。
zone.internal.max_subscriptions
## Value: Integer zone.internal.max_subscriptions = 0
说明:单个客户端允许订阅的最大主题数。0
表示不限制。
zone.internal.max_inflight
## Value: Number zone.internal.max_inflight = 128
说明:飞行窗口大小。飞行窗口用于存储未被应答的 QoS 1 和 QoS 2 消息。
zone.internal.max_awaiting_rel
## Value: Number zone.internal.max_awaiting_rel = 1000
说明:QoS 2 消息的最大接收窗口,配置 EMQX 能够同时处理多少从客户端发来的 QoS 2 消息。0
表示不限制。
zone.internal.max_mqueue_len
## Value: Number >= 0 zone.internal.max_mqueue_len = 10000
说明:消息队列最大长度。当飞行窗口满,或客户端离线后,消息会被存储至该队列中。0
表示不限制。
zone.internal.mqueue_store_qos0
## Value: false | true zone.internal.mqueue_store_qos0 = true
说明:消息队列是否存储 QoS 0 消息。
zone.internal.enable_flapping_detect
## Value: on | off zone.internal.enable_flapping_detect = off
说明:是否开启 Flapping
检查。
#zone.internal.force_shutdown_policy
## Default: ## - 10000|64MB on ARCH_64 system ## - 1000|32MB on ARCH_32 sytem #zone.internal.force_shutdown_policy = 10000|64MB
说明:当进程消息队列长度,或占用的内存字节到达某值,就强制关闭该进程。
这里的 消息队列
指的是 Erlang 进程的 消息邮箱
,并非 QoS 1 和 QoS 2 的 mqueue
。
格式:<Number>|<Bytes>
。
例如,32000|32MB
表示当进程堆积了 32000
条消息,或进程占用内存达到 32MB
则关闭该进程。
zone.internal.mountpoint
## Variables in mountpoint path: ## - %c: clientid ## - %u: username ## ## Value: String ## zone.internal.mountpoint = cloudbound/
说明:主题挂载点。配置后,所有订阅和发布的主题在 EMQX 都会为其增加一个前缀。
其中可用的占位符有:
%c
:表示客户端的 Client ID。%u
:表示客户端的 Username。
例如,配置挂载点为 user/%c/
。那么 Client ID 为 tom
的客户端在发布主题 open
消息时,实际在 EMQX 中路由的主题是 user/tom/open
。
zone.internal.ignore_loop_deliver
## Value: true | false zone.internal.ignore_loop_deliver = false
说明:是否忽略自己发送的消息。如果忽略,则表明 EMQX 不会向消息的发送端投递此消息。
zone.internal.strict_mode
## Value: true | false zone.internal.strict_mode = false
说明:是否开启严格检查模式。严格检查模式会更细致的检查 MQTT 报文的正确性。
zone.internal.response_information
## Value: String ## zone.internal.response_information = example
说明:指定返回给客户端的响应信息
zone.internal.bypass_auth_plugins
## Value: true | false zone.internal.bypass_auth_plugins = true
说明:是否允许该 Zone 下的客户端绕过认证插件的认证步骤。