消息过期间隔未生效

Windows 版本: Windows 11 专业版 24H2
NanoMQ 版本: nanomq-0.23.6-windows-x86_64
NanoMQ 配置: 默认配置
MQTTX 版本: v1.11.1
测试例程: 消息过期间隔介绍与示例 | MQTT 5.0 特性详解

期望结果:


实际结果:


问题描述:

  1. 消息过期间隔未生效,实际结果中 5 秒后仍然能够收到过期消息;
  2. 消息过期时间不更新,不会显示剩下的过期时间;
  3. QoS 0 订阅者无法收到消息,只有 QoS 1/2 信息可以使用消息过期间隔。
    猜测对于 QoS 0 消息,Broker 通常不进行排队存储,所以消息过期间隔的机制(即在队列中存储一段时间后丢弃)没有应用,然而使用 EMQX 公共服务器没有这个问题;
  4. 实际结果中,sub 上线后过了很久才接收到过期间隔消息。

谢谢,确实在去年的一个版本里意外删掉了一行导致这个功能失效了。
已修复,在这周的新版本就会带上。

qos0就是不保存消息的,协议规范如此,emqx也是这样的,如果不是那是emqx的bug。

nanomq为了处理高效,就是不修改property里的过期间隔的,保留发布时候的原始值。这在协议里也没有要求。

1 个赞