mosquitto broker 保留多条消息

Sam*_*Das 0 android mqtt mosquitto paho iot

我在 EC2 上的 Ubuntu 上运行 mosquitto 代理。我也做了一个改变max_queued_messages 1000max_inflight_messages 10/etc/mosquitto/mosquitto.conf

我使用qos=2发布到这个代理并保留 enabled。对于发布,我使用mosquitto_pub -t 1 -m "{c:{d:\"pN\",m:\"Pr1\"}}" -r -q 2. 订阅者方面我正在使用 org.eclipse.paho.android.service:1.0.2具有相同 qos=2 的库。
并且仅通过options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1)for 参数提供单个选项client.connect(options)

如果连接到服务器的订阅者设备由于任何原因断开连接并再次重新连接,那么问题就来了,然后只获得最后一条保留的消息,而缺少消息之间的所有内容。
而且,即使尚未发布任何内容,重新连接后仍会获取订阅者设备在断开连接之前可能已经获得的最后保留消息。

我希望在重新连接订阅者后应该获得在断开连接期间发布的所有消息,如果已经获得,则不应再次显示。想知道如何以及在哪里做。

har*_*llb 5

订阅主题时,即使在任何 QOS 级别之前已经交付,也将始终交付最后发布的保留消息。这是有意为之,如果将消息发布为保留消息,则无法阻止它。(需要明确的是,发布带有保留标志的消息将替换最后保留的消息,并且不会将所有保留的消息排队。)

至于在断开连接/重新连接之间没有发布消息,这意味着客户端传递了cleansession=true连接选项。如果您希望传递错过的消息,则需要确保在连接时将该cleansession标志设置为false。这与是否使用保留标志发布消息完全无关。