延迟消息
大约 2 分钟
一、延迟消息
当客户端使用特殊主题前缀 $delayed/{DelayInteval} 发布消息时,将触发延迟发布功能,可以实现按照用户配置的时间间隔延迟发布消息。
延迟发布主题的具体格式如下:
$delayed/{DelayInterval}/{TopicName}
$delayed:使用$delay作为主题前缀的消息都将被视为需要延迟发布的消息。延迟间隔由下一主题层级中的内容决定。{DelayInterval}:指定该 MQTT 消息延迟发布的时间间隔,单位是秒,允许的最大间隔是 4294967 秒。如果{DelayInterval}无法被解析为一个整型数字,将丢弃该消息,客户端不会收到任何信息。{TopicName}:MQTT 消息的主题名称。
例如:
$delayed/15/property/post:15 秒后将 MQTT 消息发布到主题property/post。$delayed/60/a/b:1 分钟后将 MQTT 消息发布到a/b。$delayed/3600/$SYS/topic:1 小时后将 MQTT 消息发布到$SYS/topic。
下面是延迟消息列表
消息 Id(Message Id)
主题(Topic)
QoS(Quality of Service,服务质量)
节点(Node)
客户端 Id(Client Id)
发布时间(Publish Time)
是否保留(Retained)
操作(Operation)
剩余延迟时间(Remaining Delay Time)
延迟时间(Delay Time)

保留消息详情
支持plainText,Json、Hex解析

使用MQTTX模拟延迟发布
启动一个MQTTX客户端
编辑一个延迟消息主题,这里延迟15秒 $delayed/15/info/post
发送延迟消息,注意:可以在新建另外一个客户端后,再发送延迟消息

新建一个客户端,订阅主题 /info/post

从上面演示可得到结果,在A节点的客户端发送的主题
$delayed/15/info/post实际发送主题为info/post,B节点的客户端中订阅了主题
info/post,在等待15s后,B节点的客户端收到延迟方式的主题。
