我最近开始使用paho mqtt for java和mqtt,我坚持使用mqtt broker和paho client提供的持久性机制 . 也许我在mqtt的背景下误解了(很可能是)持久性的概念 .
Use case which we have to support is following :应该有可能我们的mqtt客户端断开了7天(我非常怀疑它会发生,但是没问题)甚至应用程序关闭而不会在这7天内恢复连接,并且一旦启动并运行在断开连接的7天内发送所有消息 .
Paho客户端在它或代理关闭时支持缓冲消息的持久性,一旦网络恢复或代理启动,就会发送缓冲消息,但如果应用程序在客户端断开连接或代理时关闭,则无法发送缓冲消息没有 .
基本上我的问题是 - 断开缓冲的消息是否有可能在paho客户端关闭并重新启动后继续存在?
3 回答
规范没有说明它,只是指定:
如您所见,您的客户只会获得该主题的最后发布消息...
其他一切背后都是好的!
假设您使用的是
MqttDefaultFilePersistence
而不是MemoryPersistence
模块,那么客户端应该在无法访问代理时对消息进行排队,并且这些排队的消息也应该在客户端重新启动后继续存在 .离线缓冲是一个相对较新的功能,但它应该在所有当前版本中
将客户端ID和清除会话设置为false将在客户端断开连接时保留代理处的所有消息 .
设置MaxInflight以在客户端排队消息,而代理已关闭 .