MQTT Zones 参数配置
EMQ X 使用 Zone 来管理配置组。一个 Zone 定义了一组配置项 (比如最大连接数等),Listener 可以指定使用某个 Zone,以使用该 Zone 下的所有配置。多个 Listener 可以共享同一个 Zone。
Listener 使用配置的匹配规则如下,其优先级 Zone > Global > Default:
EMQ X 支持 zone.$name.xxx
替换成相应的 $name
的,这里的 zone.external.xxx
和 zone.internal.xxx
中的 $name
都可以换成相应的名称,也可以新增自定义 name
的 zone.$name.xxx
。
External Zone 参数设置
TCP 连接建立后等待 MQTT CONNECT 报文的最长时间:
zone.external.idle_timeout = 15s
发布消息速率限制:
## zone.external.publish_limit = 10,100
开启黑名单检查:
zone.external.enable_ban = on
开启 ACL 检查:
zone.external.enable_acl = on
是否统计每个连接的信息:
zone.external.enable_stats = on
设置连接/会话进程在接收多少消息或字节后强制进行 GC:
zone.external.force_gc_policy = 1000|1MB
设置连接/会话进程可使用的最大消息队列长度和堆大小,超出限制时将强制关闭进程:
## zone.external.force_shutdown_policy = 8000|800MB
MQTT 最大报文尺寸:
## zone.external.max_packet_size = 64KB
ClientId 最大长度:
## zone.external.max_clientid_len = 1024
Topic 最大层级,0 表示没有限制:
## zone.external.max_topic_levels = 7
允许的最大 QoS:
## zone.external.max_qos_allowed = 2
Topic Alias 最大数量,0 表示不支持 Topic Alias:
## zone.external.max_topic_alias = 0
是否支持 MQTT 保留消息:
## zone.external.retain_available = true
是否支持 MQTT 通配符订阅:
## zone.external.wildcard_subscription = false
是否支持 MQTT 共享订阅:
## zone.external.shared_subscription = false
服务器允许的保持连接时间,注释此行表示保持连接时间由客户端决定:
## zone.external.server_keepalive = 0
Keepalive _ backoff _ 2 为实际的保持连接时间:
zone.external.keepalive_backoff = 0.75
允许的最大主题订阅数量,0 表示没有限制:
zone.external.max_subscriptions = 0
是否允许 QoS 升级:
zone.external.upgrade_qos = off
飞行窗口的最大大小:
zone.external.max_inflight = 32
QoS1/2 消息的重传间隔:
zone.external.retry_interval = 20s
等待 PUBREL 的 QoS2 消息最大数量(Client -> Broker),0 表示没有限制:
zone.external.max_awaiting_rel = 100
QoS2 消息(Client -> Broker)被删除前等待 PUBREL 的最大时间
zone.external.await_rel_timeout = 300s
MQTT v3.1.1 连接中使用的默认会话过期时间:
zone.external.session_expiry_interval = 2h
消息队列类型:
zone.external.mqueue_type = simple
消息队列最大长度:
zone.external.max_mqueue_len = 1000
主题优先级:
## zone.external.mqueue_priorities = topic/1=10,topic/2=8
消息队列是否存储 QoS0 消息:
zone.external.mqueue_store_qos0 = true
是否开启 flapping 检测:
zone.external.enable_flapping_detect = off
指定时间内允许状态变化的最大次数:
zone.external.flapping_threshold = 10, 1m
flapping 禁止时间:
zone.external.flapping_banned_expiry_interval = 1h
Internal Zone 参数设置
允许匿名访问:
zone.internal.allow_anonymous = true
是否统计每个连接的信息:
zone.internal.enable_stats = on
关闭 ACL 检查:
zone.internal.enable_acl = off
是否支持 MQTT 通配符订阅:
## zone.internal.wildcard_subscription = true
是否支持 MQTT 共享订阅:
## zone.internal.shared_subscription = true
允许的最大主题订阅数量,0 表示没有限制:
zone.internal.max_subscriptions = 0
飞行窗口的最大大小:
zone.internal.max_inflight = 32
等待 PUBREL 的 QoS2 消息最大数量(Client -> Broker),0 表示没有限制:
zone.internal.max_awaiting_rel = 100
消息队列最大长度:
zone.internal.max_mqueue_len = 1000
消息队列是否存储 QoS0 消息:
zone.internal.mqueue_store_qos0 = true
是否开启 flapping 检测:
zone.internal.enable_flapping_detect = off
指定时间内允许状态变化的最大次数:
zone.internal.flapping_threshold = 10, 1m
flapping 禁止时间:
zone.internal.flapping_banned_expiry_interval = 1h