跳到主要内容

MQTT 配置

本节介绍了控制 YedMQ 中 MQTT 协议行为的设置。

[mqtt]
sys_topic_interval_secs = 10
inflight_retry_interval_secs = 10
default_authentication = "deny"
default_authorization = "deny"
max_message_size = 268435456
配置项描述默认值
sys_topic_interval_secs发布系统状态到 $SYS 主题的时间间隔。10
inflight_retry_interval_secs重试未确认(Inflight)消息的时间间隔。10
default_authentication当没有身份验证插件处理连接时的默认结果。选项:allow, denydeny
default_authorization当没有授权插件处理操作时的默认结果。选项:allow, denydeny
max_message_size单个 MQTT 数据包允许的最大大小(以字节为单位)。268435456 (256MB)

仓库自带配置把这些默认值和安全优先的首次启动策略保持一致。就当前 Broker 运行时而言,MQTT 是否放行还会受到 插件配置 中插件宿主兜底值的影响,而这两个值默认同样是拒绝。

协议支持

YedMQ 在 TCP、TLS、WS 和 WSS 监听器上接受 MQTT v3.1.1 与 MQTT 5.0 客户端。MQTT 5.0 支持覆盖常用 Broker 流程:CONNECT、发布/订阅、取消订阅、PING、DISCONNECT、QoS 0/1/2、保留消息、持久会话、Session Expiry Interval、Message Expiry Interval、共享订阅、REST 发布消息,以及 $SYS 系统主题投递。

Broker 会在 CONNACK 中声明保守的 MQTT 5.0 能力限制。Topic Alias Maximum 为 0,Subscription Identifier Available 为 false,Shared Subscription Available 为 true。增强认证、Topic Alias 和 Subscription Identifier 会在协议允许响应时通过 MQTT 5.0 reason code 明确拒绝。

共享订阅使用 $share/<group>/<filter> 语法。对于实时发布,YedMQ 会把每条匹配消息投递给每个共享组中的一个符合条件的成员,并在 router actor 内使用确定性的轮询选择。普通非共享订阅仍会扇出到所有匹配订阅者。保留消息回放会直接发送给发起订阅的客户端,而不会再通过共享组重新分配。

MQTT 5.0 的 CONNECT、PUBLISH 和 SUBSCRIBE 元数据会通过 插件开发指南 中描述的既有 properties 字段暴露给插件。