zoneexternal

zone.external.idle_timeout

TypeDefault
duration15s
说明

TCP 连接建立后的发呆时间,如果这段时间内未收到任何报文,则会关闭该连接。

zone.external.enable_acl

TypeOptional ValueDefault
enumon, offon
说明

是否开启 ACL 检查。

zone.external.enable_ban

TypeOptional ValueDefault
enumon, offon
说明

是否开启黑名单。

zone.external.enable_stats

TypeOptional ValueDefault
enumon, offon
说明

是否开启客户端状态统计。

zone.external.acl_deny_action

TypeOptional ValueDefault
enumignore, disconnectignore
说明

ACL 检查失败后,执行的操作。

  • ignore:不做任何操作。
  • disconnect:断开连接。

zone.external.force_gc_policy

TypeDefault
string16000</td><td>16MB
说明

当收到一定数量的消息,或字节,就强制执行一次垃圾回收。

格式:<Number>|<Bytes>

例如,16000|16MB 表示当收到 16000 条消息,或 16MB 的字节流入就强制执行一次垃圾回收。

zone.external.force_shutdown_policy

TypeDefault
string-
说明

当进程消息队列长度,或占用的内存字节到达某值,就强制关闭该进程。

这里的 消息队列 指的是 Erlang 进程的 消息邮箱,并非 QoS 1 和 QoS 2 的 mqueue

格式:<Number>|<Bytes>

例如,32000|32MB 表示当进程堆积了 32000 条消息,或进程占用内存达到 32MB 则关闭该进程。

zone.external.max_packet_size

TypeDefault
bytesize-
说明

允许的 MQTT 报文最大长度。

zone.external.max_clientid_len

TypeDefault
integer-
说明

允许的 Client ID 串的最大长度。

zone.external.max_topic_levels

TypeDefault
integer-
说明

允许客户端订阅主题的最大层级。0 表示不限制。

zone.external.max_qos_allowed

TypeOptional ValueDefault
enum0, 1, 2-
说明

允许客户端发布的最大 QoS 等级。

zone.external.max_topic_alias

TypeDefault
integer-
说明

允许最大的主题别名数。0 表示不支持主题别名。

zone.external.retain_available

TypeOptional ValueDefault
enumtrue, false-
说明

是否支持 Retain 消息。

zone.external.wildcard_subscription

TypeOptional ValueDefault
enumtrue, false-
说明

是否支持订阅通配主题。

zone.external.shared_subscription

TypeOptional ValueDefault
enumtrue, false-
说明

是否支持共享订阅。

zone.external.server_keepalive

TypeDefault
integer-
说明

服务端指定的 Keepalive 时间。用于 MQTT v5.0 协议的 CONNACK 报文。

zone.external.keepalive_backoff

TypeOptional ValueDefault
float> 0.50.75
说明

Keepalive 退避指数。EMQ X 如果在 Keepalive * backoff * 2 的时间内未收到客户端的任何数据报文,则认为客户端已心跳超时。

zone.external.max_subscriptions

TypeDefault
integer0
说明

单个客户端允许订阅的最大主题数。0 表示不限制。

zone.external.upgrade_qos

TypeOptional ValueDefault
enumon, offoff
说明

允许 EMQ X 在投递消息时,强制升级消息的 QoS 等级为订阅的 QoS 等级。

zone.external.max_inflight

TypeDefault
integer32
说明

飞行窗口大小。飞行窗口用于存储未被应答的 QoS 1 和 QoS 2 消息。

zone.external.retry_interval

TypeDefault
duration30s
说明

消息重发间隔。EMQ X 在每个间隔检查是否需要进行消息重发。

zone.external.max_awaiting_rel

TypeDefault
integer100
说明

QoS 2 消息的最大接收窗口,配置 EMQ X 能够同时处理多少从客户端发来的 QoS 2 消息。0 表示不限制。

zone.external.await_rel_timeout

TypeDefault
duration300s
说明

QoS 2 消息处理超时时间,在超时后若还未收到 QoS 的 PUBREL 报文,则将消息从接收窗口中丢弃。

zone.external.session_expiry_interval

TypeDefault
duration2h
说明

会话默认超时时间,主要用于 MQTT v3.1 和 v3.1.1 协议。在 MQTT v5.0 中,该值通常会携带在客户端的连接报文中。

zone.external.max_mqueue_len

TypeDefault
integer1000
说明

消息队列最大长度。当飞行窗口满,或客户端离线后,消息会被存储至该队列中。0 表示不限制。

zone.external.mqueue_priorities

TypeOptional ValueDefault
stringnone, <Spec>none
说明

队列消息优先级配置:

  • none:表示无优先级区分。
  • <Spec>:表示为一个消息优先表,它配置了某主题下消息的优先级。例如:
    • topic/1=10:表示主题 topic/1 的消息优先级为 10
    • topic/1=10,topic/2=8:表示配置了两个主题的优先级,其分别为 108
    • 其中,优先级数值越高,优先等级越高。

当消息队列长度有限时,会优先丢弃低优先级的消息。

zone.external.mqueue_default_priority

TypeOptional ValueDefault
enumhighest, lowesthighest
说明

消息默认的优先等级。

zone.external.mqueue_store_qos0

TypeOptional ValueDefault
enumtrue, falsetrue
说明

消息队列是否存储 QoS 0 消息。

zone.external.enable_flapping_detect

TypeOptional ValueDefault
enumon, offoff
说明

是否开启 Flapping 检查。

zone.external.mountpoint

TypeDefault
string-
说明

主题挂载点。配置后,所有订阅和发布的主题在 EMQ X 都会为其增加一个前缀。

其中可用的占位符有:

  • %c:表示客户端的 Client ID。
  • %u:表示客户端的 Username。

例如,配置挂载点为 user/%c/。那么 Client ID 为 tom 的客户端在发布主题 open 消息时,实际在 EMQ X 中路由的主题是 user/tom/open

zone.external.use_username_as_clientid

TypeOptional ValueDefault
enumtrue, falsefalse
说明

是否用客户端的 Username 作为其 Client ID。

zone.external.ignore_loop_deliver

TypeOptional ValueDefault
enumtrue, falsefalse
说明

是否忽略自己发送的消息。如果忽略,则表明 EMQ X 不会向消息的发送端投递此消息。

zone.external.strict_mode

TypeOptional ValueDefault
enumtrue, falsefalse
说明

是否开启严格检查模式。严格检查模式会更细致的检查 MQTT 报文的正确性。