我使用swift在iOS上工作。我在我的iOS应用程序中使用cocoa mqtt协议。 我也在使用Activemq作为消息代理。
目标
我订阅了 ActiveMQ 上的主题。之后,当我取消订阅ActiveMQ上的主题时,我希望用户仍然是该主题的订阅者,但不接收消息。它离线了。
我希望订阅者再次处于活动状态时可以使用该主题中的待处理消息。
问题陈述
当我取消订阅该主题时,该用户不再是主题的订阅者,并且在该主题上发送的所有消息都会在取消订阅期间丢失(我没有收到)。
答案 0 :(得分:0)
此问题的一个解决方案是使用内置于MQTT中的保留消息传递功能。然后,您将收到关于每个主题发布的最后一条消息,即使您已经在之前的会话中收到过这些消息。
另一种解决方案是在发送的消息上使用QoS 1或2。如果您的应用与cleanSession
设置为false
并且消息是使用QoS 1或2发布的,则您将收到与代理断开连接时发送的消息。
详细了解MQTT QoS here。