2016-12-26 1543 views
0

从我的研究中,MQTT代理只保存最新消息,但Facebook在其Messenger应用程序中使用MQTT。那么他们是否使用自定义代理来保留这些消息?MQTT是否能够将消息保存到数据库

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

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

回答

3

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

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

+0

那么这是否意味着我可以使用其他软件订阅这些消息并将消息保存到数据库中?有这样的软件的例子吗? –

+0

有很多的例子,有些甚至在类似的问题在这里提到Stackoverflow – hardillb

1

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

但是,MQTT有一些QoS机制。如果存在与客户端的持续连接,则可以使用它。 Facebook也可能会利用这一点。

如果您需要开箱即用的消息持久性,尽管MQTT是不可能的。您可以使用诸如Apache Kafka之类的技术。

相关问题