MQTT是否能够将消息保存到数据库

时间:2016-12-26 14:18:12

标签: android facebook chat mqtt

从我的研究中,MQTT经纪人只保存最新消息,但facebook在其Messenger应用程序中使用MQTT。那么他们是否使用自定义代理来保留消息?

https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920

我的问题是mqtt经纪人可以保留所有发送的消息,以便我可以创建自己的聊天消息移动应用程序吗?我知道像HiveMQ这样的付费服务提供了这项功能,但我正在寻找一种免费的替代方案。

2 个答案:

答案 0 :(得分:4)

MQTT是用于在客户端和服务器之间发送和接收消息的协议。超出协议基本要求的消息要么取决于实现。

您可以使用订阅主题的应用程序将所有消息存储在数据库中 - 它不必是代理组件的功能。

答案 1 :(得分:2)

通常的MQTT代理以被动方式工作。它从发布者那里获取消息并将其转发给任何可用的订阅者。 我认为Facebook使用另一个接收消息的进程,然后再将其发送给客户端。然后,客户端可以在收到消息时发送另一条MQTT消息。

但是,MQTT有一些QoS机制。如果与客户端有持久连接,则可以使用它。 Facebook也可能正在利用它。

如果您需要开箱即用的消息持久性,但MQTT无法实现。您可以使用Apache Kafka等技术。