Paho MQTT客户端的缓存信息在Mosquitto服务器上的意外行为。

问题描述 投票:0回答:1

我确实在应用中使用了PAHO C客户端库。我确实用MQTTAsync_subscribe()来订阅主题,并且将QoS设置为1。根据我的理解,1意味着,至少向客户端发送一次消息。

我断开了订阅该主题的客户端,而发布该主题的客户端仍然在向Mosquitto broker发送消息。如果我启动订阅者,比如说几个小时后,我得到了所有的缓冲消息,从最后一条消息开始,当订阅者被关闭。到目前为止,一切都很好! 但问题是,消息到达的时间与发布者发送新消息的时间间隔相同。通过这样做,你永远不会得到发布者排队的最新消息。

我所期望的是Mosquitto经纪商尝试将所有待发消息一个接一个地发送给客户端,而不是在新消息发布时发送一个旧消息。

也许有人可以帮助我理解为什么会发生这种情况,或者如何克服这种情况?

mqtt mosquitto paho
1个回答
0
投票

排队的消息应该都是在客户端重新连接时批量发送的。

它们不是排队后用相同的时间偏移来交付,mosquitto甚至不会保留到达时间,以便能够进行时间偏移延迟交付(对于MQTT v5消息来说,到达时间会被保留,因为它们现在可以有TTL值,但这只是用来从队列中删除过期消息,而不是延迟延迟交付)。

© www.soinside.com 2019 - 2024. All rights reserved.