文档

消息过期

更新时间:
一键部署

本文为您介绍MQTT 5.0的新特性消息过期。

功能介绍

MQTT 5.0中的消息过期(Message Expiry Interval)功能,允许设置一条消息在发布后能够在Broker中存活的最长时间。如果这条消息在指定的时间间隔内未能被送达至任何一个订阅者,它将被Broker删除,能够确保消息的实时性、避免传递过时信息。

使用限制

  • 如果没有设置则默认不过期。

  • 消息过期时间最小不少于1分钟,最大消息过期时间不超过3天。

  • 如果设置了过期时间但是小于1分钟,则消息的过期时间为1分钟。如果设置了过期时间但是大于3天,则消息的过期时间为3天。

应用场景

  • 实时监控:在物联网(IoT)仪表盘或实时数据监控系统中使用,因为过时的传感器数据可能不再准确或相关。

  • 时效性通信:例如限时优惠或闪促的广播,需要在一定时间内送达消费者,如果超时就不再具有相关性。

  • 紧急消息:类似警报或安全通知,这些消息如果没有立即送达,超时后就失去了意义。

  • 订单和事务处理:财务交易或订单处理中的实时消息,强调在特定时间内完成某项操作的重要性。

消息示例

假设一个IoT设备,负责监控并上报工厂设备的运行状态。可以使用以下格式的MQTT消息并设定过期时间,来确保只有最新状态被处理:

PUBLISH
Topic: factory/machine1/status
Payload: RUNNING
QoS: 1
Message Expiry Interval: 300 // 消息发布后保留5分钟(300秒)的有效期

如果这条消息在5分钟内没有被任何订阅者接收,则它会从Broker队列中被移除,以避免未来的订阅者接收到这条过时的消息。

另外,假设有一家电子商务公司需要发送关于限时优惠的消息,会这样操作:

PUBLISH
Topic: store/promotions
Payload: 50off-for-next-30-minutes
QoS: 1
Message Expiry Interval: 1800 // 30分钟后优惠过期

在这里,如果该优惠消息在30分钟内没能达到订阅者,消息将自动从Broker中删除,因为它已经不再有效。

消息过期间隔的主要好处是确保只有当前和最相关的信息被传递给订阅者。