emqx从5.4.1版本升级到emqx5.6.0 版本后,遗嘱消息接收异常

emqx在5.4.1版本 遗嘱消息接收正常,升级了5.6.0后,在客户端没有异常断开的情况下也会收到遗嘱消息,不知道是什么原因?

你好,这应该是由于我们在 https://github.com/emqx/emqx/pull/11868 修改来遗嘱消息的实现导致的。

When an existing MQTT session is taken over by a new connection reusing the same client ID, the will message for the prior connection is not being published. This was tested using MQTT 3.1.1 clients and EMQX 5.0.19.

在这次修改中,我们规范的实现了,协议条款:
(a.) MQTT-3.1.2-8
(b.) MQTT-3.1.2-10
(c.) MQTT 3.1.3-9
(d.) MQTT-3.1.4-3
(e.) MQTT-3.14.4-3
(f.) ch 3.1.3.2.2

即:设备链接的Session在被另外一个同ClientId重用时;前一个链接的Will消息应该被发布才对