Zone

EMQ X 支持基于 Zone 的 Listeners 监听器组,根据不同的 Zone 定义不同的 Options 。

多个 Listener 属于一个 Zone ,当客户端属于某个 Zone 时,客户端匹配该 Zone 中的 Options 。

Listener options 模块逐条匹配规则:

  1. --------- ---------- -----------
  2. Listeners -------> | Zone | --nomatch--> | Global | --nomatch--> | Default |
  3. --------- ---------- -----------
  4. | | |
  5. match match match
  6. \|/ \|/ \|/
  7. Zone Options Global Options Default Options
  1. # 创建名为 external 的域,并启用 acl 配置
  2. zone.external.enable_acl = on
  3. # external 监听器继承 external 域的配置
  4. listener.tcp.external = 0.0.0.0:1883
  5. # internal 监听器继承 internal 域的配置,TCP 连接只监听了本地 IP
  6. listener.tcp.internal = 127.0.0.1:11883

EMQ X 内置的两个域及监听器:

  • external:外部域,绑定于 external 监听器,各项端口监听在公网 IP 用于外部连接;
  • internal:内部域,绑定于 internal 监听器,各项端口监听在本地 IP 用于内部连接。

Zone 的配置项

etc/emqx.conf 配置文件中,zone. 开头的配置均为 Zone 的配置项,配置项格式为 zone.$name.configItem,部分配置及对照如下:

配置项说明
zone.external.idletimeout = 15s连接池超时
zone.external.publish_limit = 10,10sPUB 速率限制,Number,Duration 示例为 10s 内 10 次
zone.external.allow_anonymous = true是否启用匿名认证
zone.external.enable_ban = on是否开启黑名单
zone.external.enable_stats = on是否启用连接状态
zone.external.max_packet_size = 64KB最大报文大小
zone.external.max_clientid_len = 1024最大 clientid 长度
zone.external.max_topic_levels = 7最大 Topic 层级
zone.external.max_qos_allowed = 2最大 QoS
zone.external.max_topic_alias = 0最大 Topic 别名数
zone.external.retain_available = true是否启用 retain
zone.external.wildcard_subscription = false是否支持通配符订阅
zone.external.shared_subscription = false是否启用共享订阅
zone.external.server_keepalive = 0心跳时间
zone.external.keepalive_backoff = 0.75心跳超时退回(keepalive 0.75 _ 2)
zone.external.max_subscriptions = 0最大订阅数
zone.external.upgrade_qos = off是否根据订阅升级 QoS