延迟发布
延迟发布是 EMQX 支持的 MQTT 扩展功能。当客户端使用特殊主题前缀 $delayed/{DelayInteval} 发布消息时,将触发延迟发布功能,可以实现按照用户配置的时间间隔延迟发布消息。
延迟发布主题的具体格式如下:
bash
$delayed/{DelayInterval}/{TopicName}$delayed:使用$delay作为主题前缀的消息都将被视为需要延迟发布的消息。延迟间隔由下一主题层级中的内容决定。{DelayTime}:指定该 MQTT 消息延迟发布的时间间间隔或时间戳,单位是秒,允许的最大间隔是 42949669 秒(大约497天)。如果{DelayTime}无法被解析为一个整型数字,或者不在允许的范围内,EMQX 将丢弃该消息,客户端不会收到任何信息。{TopicName}:MQTT 消息的主题名称。
例如:
$delayed/15/x/y:15 秒后将 MQTT 消息发布到主题x/y。$delayed/60/a/b:1 分钟后将 MQTT 消息发布到a/b。$delayed/1743490800/chat/id:在瑞典时间2025年4月1日9点发布消息到chat/id。$delayed/3600/$SYS/topic:1 小时后将 MQTT 消息发布到$SYS/topic。
通过 Dashboard 配置延迟发布
打开 EMQX Dashboard,在左侧导航菜单中,点击管理-> 延迟发布。
在延迟发布页面,您可以进行以下配置:
- 启用: 启用或禁用延迟发布。默认情况下,已启用。
- 最大延迟消息数:可以指定延迟消息的最大数量。

使用 MQTTX Desktop 尝试延迟发布
前置准备
能使用 MQTTX Desktop 进行基本的发布和订阅操作。
启动 EMQX 和 MQTTX Desktop。点击新建连接创建一个名为
Demo的客户端连接作为发布者。- 在名称栏中输入
Demo。 - 在本演示中,服务器地址使用本地主机
127.0.0.1作为示例。 - 其它设置保持默认,点击连接。
TIP
MQTTX Desktop 中介绍了更多详细的连接创建信息。

- 在名称栏中输入
创建另一个 MQTT 客户端连接作为订阅者,将名称设为
Subscriber。在连接窗格中选择客户端
Demo。在Topic文本框中输入主题名$delayed/10/x/y,并将消息内容输入为Delayed Message。$delayed: 表示这是一条延迟消息。10: 表示延迟间隔为 10 秒。x/y: 表示消息的主题名。
在连接窗格中选择客户端
Subscriber。点击新建订阅按钮创建一个订阅。在主题文本框中输入x/y,以订阅该主题。点击确定。
在连接窗格中选择客户端
Demo。点击发送按钮,发送带有主题$delayed/10/x/y的Delayed Message。等待 10 秒钟。您将看到客户端
Subscriber在 10 秒后接收到延迟消息。
使用 MQTTX CLI 尝试延迟发布
前置准备
能使用 MQTTX CLI 进行基本的发布和订阅操作。
创建一个新的连接作为订阅者,并订阅主题
t/1。bashmqttx sub -t t/1 -v在终端中为客户端打开一个新的窗口,用以下命令发送一条延迟消息。订阅者将在 5 秒后接收到该消息。
bashmqttx pub -t "\$delayed/5/t/1" -m "Hello Delayed msg"