从我的研究中,MQTT经纪人只保存最新消息,但facebook在其Messenger应用程序中使用MQTT。那么他们是否使用自定义代理来保留消息?
https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920
我的问题是mqtt经纪人可以保留所有发送的消息,以便我可以创建自己的聊天消息移动应用程序吗?我知道像HiveMQ这样的付费服务提供了这项功能,但我正在寻找一种免费的替代方案。
答案 0 :(得分:4)
MQTT是用于在客户端和服务器之间发送和接收消息的协议。超出协议基本要求的消息要么取决于实现。
您可以使用订阅主题的应用程序将所有消息存储在数据库中 - 它不必是代理组件的功能。
答案 1 :(得分:2)
通常的MQTT代理以被动方式工作。它从发布者那里获取消息并将其转发给任何可用的订阅者。 我认为Facebook使用另一个接收消息的进程,然后再将其发送给客户端。然后,客户端可以在收到消息时发送另一条MQTT消息。
但是,MQTT有一些QoS机制。如果与客户端有持久连接,则可以使用它。 Facebook也可能正在利用它。
如果您需要开箱即用的消息持久性,但MQTT无法实现。您可以使用Apache Kafka等技术。