当订阅者应用程序关闭时,emqttd 无法获取同一主题中的所有消息

emqttd not getting all messages in same topic when subscriber application is down

仅在订阅者应用程序重新启动时收到最后保留的消息。

OS: Windows EMQ 代理版本:2.3.10 Eclipse 帕霍

当我在同一主题上发布 10 条消息时,由于某种原因订户应用程序崩溃,一段时间后重新启动子应用程序,我只收到最后一条保留消息并丢失所有其他数据,这是个大问题。

我在 pub 和 sub 上将 Retained 标志设置为 true,clean session 标志设置为 false,Qos 设置为 1。

有人可以帮忙吗? 我是否缺少任何配置或 Erlang 代理的行为就像只获取最后一条保留消息。

首先,MQTT 代理将仅保留发布到具有给定主题的保留标志的主题的 last 消息。保留消息与离线客户端的高 QOS 消息排队无关。有关保留消息的更多详细信息,我建议您查看来自 HiveMQ

this post

对于离线客户端的队列消息,您需要满足以下所有要点。

  1. 清理会话标志必须设置为false
  2. 客户端 ID 必须在所有连接中保持相同
  3. 消息必须以 > 0 的 QOS 发布
  4. 客户端必须订阅 QOS > 0 的主题

有关持久性和排队消息的更多详细信息,请查看 this 其他 HiveMQ post。