MQTT Zones 参数配置

EMQ X 使用 Zone 来管理配置组。一个 Zone 定义了一组配置项 (比如最大连接数等),Listener 可以指定使用某个 Zone,以使用该 Zone 下的所有配置。多个 Listener 可以共享同一个 Zone。

Listener 使用配置的匹配规则如下,其优先级 Zone > Global > Default:

image

EMQ X 支持 zone.$name.xxx 替换成相应的 $name 的,这里的 zone.external.xxxzone.internal.xxx 中的 $name 都可以换成相应的名称,也可以新增自定义 namezone.$name.xxx

External Zone 参数设置

TCP 连接建立后等待 MQTT CONNECT 报文的最长时间:

  1. zone.external.idle_timeout = 15s

发布消息速率限制:

  1. ## zone.external.publish_limit = 10,100

开启黑名单检查:

  1. zone.external.enable_ban = on

开启 ACL 检查:

  1. zone.external.enable_acl = on

是否统计每个连接的信息:

  1. zone.external.enable_stats = on

设置连接/会话进程在接收多少消息或字节后强制进行 GC:

  1. zone.external.force_gc_policy = 1000|1MB

设置连接/会话进程可使用的最大消息队列长度和堆大小,超出限制时将强制关闭进程:

  1. ## zone.external.force_shutdown_policy = 8000|800MB

MQTT 最大报文尺寸:

  1. ## zone.external.max_packet_size = 64KB

ClientId 最大长度:

  1. ## zone.external.max_clientid_len = 1024

Topic 最大层级,0 表示没有限制:

  1. ## zone.external.max_topic_levels = 7

允许的最大 QoS:

  1. ## zone.external.max_qos_allowed = 2

Topic Alias 最大数量,0 表示不支持 Topic Alias:

  1. ## zone.external.max_topic_alias = 0

是否支持 MQTT 保留消息:

  1. ## zone.external.retain_available = true

是否支持 MQTT 通配符订阅:

  1. ## zone.external.wildcard_subscription = false

是否支持 MQTT 共享订阅:

  1. ## zone.external.shared_subscription = false

服务器允许的保持连接时间,注释此行表示保持连接时间由客户端决定:

  1. ## zone.external.server_keepalive = 0

Keepalive _ backoff _ 2 为实际的保持连接时间:

  1. zone.external.keepalive_backoff = 0.75

允许的最大主题订阅数量,0 表示没有限制:

  1. zone.external.max_subscriptions = 0

是否允许 QoS 升级:

  1. zone.external.upgrade_qos = off

飞行窗口的最大大小:

  1. zone.external.max_inflight = 32

QoS1/2 消息的重传间隔:

  1. zone.external.retry_interval = 20s

等待 PUBREL 的 QoS2 消息最大数量(Client -> Broker),0 表示没有限制:

  1. zone.external.max_awaiting_rel = 100

QoS2 消息(Client -> Broker)被删除前等待 PUBREL 的最大时间

  1. zone.external.await_rel_timeout = 300s

MQTT v3.1.1 连接中使用的默认会话过期时间:

  1. zone.external.session_expiry_interval = 2h

消息队列类型:

  1. zone.external.mqueue_type = simple

消息队列最大长度:

  1. zone.external.max_mqueue_len = 1000

主题优先级:

  1. ## zone.external.mqueue_priorities = topic/1=10,topic/2=8

消息队列是否存储 QoS0 消息:

  1. zone.external.mqueue_store_qos0 = true

是否开启 flapping 检测:

  1. zone.external.enable_flapping_detect = off

指定时间内允许状态变化的最大次数:

  1. zone.external.flapping_threshold = 10, 1m

flapping 禁止时间:

  1. zone.external.flapping_banned_expiry_interval = 1h

Internal Zone 参数设置

允许匿名访问:

  1. zone.internal.allow_anonymous = true

是否统计每个连接的信息:

  1. zone.internal.enable_stats = on

关闭 ACL 检查:

  1. zone.internal.enable_acl = off

是否支持 MQTT 通配符订阅:

  1. ## zone.internal.wildcard_subscription = true

是否支持 MQTT 共享订阅:

  1. ## zone.internal.shared_subscription = true

允许的最大主题订阅数量,0 表示没有限制:

  1. zone.internal.max_subscriptions = 0

飞行窗口的最大大小:

  1. zone.internal.max_inflight = 32

等待 PUBREL 的 QoS2 消息最大数量(Client -> Broker),0 表示没有限制:

  1. zone.internal.max_awaiting_rel = 100

消息队列最大长度:

  1. zone.internal.max_mqueue_len = 1000

消息队列是否存储 QoS0 消息:

  1. zone.internal.mqueue_store_qos0 = true

是否开启 flapping 检测:

  1. zone.internal.enable_flapping_detect = off

指定时间内允许状态变化的最大次数:

  1. zone.internal.flapping_threshold = 10, 1m

flapping 禁止时间:

  1. zone.internal.flapping_banned_expiry_interval = 1h