zones.conf配置

EMQX 客服发表于:2022年03月25日 14:41:43

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:表示配置了两个主题的优先级,其分别为 108

    • 其中,优先级数值越高,优先等级越高。

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

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 下的客户端绕过认证插件的认证步骤。



    您需要登录后才可以回复