是否有将QoS 1/2消息持久保存到磁盘的MQTT代理?


11

到目前为止,EMQ(Erlang MQTT Broker)似乎尚未将QoS 1/2消息持久保存到磁盘:EMQ如何将QoS 1/2消息持久保存到磁盘

因此,在服务器意外重启的情况下,尽管必须至少或恰好一次传递QoS 1/2级消息,但内存限制或其他事件消息可能会丢失。

是否有MQTT代理将QoS 1/2消息持久保存到磁盘从而确保传递?


Answers:


8

我认为Mosquitto将内存中的消息保存到磁盘。

持久性[true | 如果为true,则连接,预订和消息数据将在mosquitto.db中的磁盘上写入,该磁盘由persistence_location指示。mosquitto重新启动后,它将重新加载mosquitto.db中存储的信息。当蚊子关闭时,数据也将以autosave_interval定义的定期间隔写入磁盘。也可以通过将蚊子发送到SIGUSR1信号来强制写入持久性数据库。如果为false,则数据将仅存储在内存中。默认为false。


7

VerneMQ是MQTT代理的一个示例,该代理可以保证在将接受的QoS1 / 2消息写入磁盘(使用LevelDB)时,将其传递出去。VerneMQ在某种程度上类似于EMQ,因为它也是开源的,并且支持群集(尽管使用了不同的技术)。完全公开,我是VerneMQ工程师。


附带问题:你们是否提供公共VerneMQ经纪人进行测试和评估?
罗斯

1
@Ross,您好,我们有一个公共实例在public.vernemq.com:1883上运行,但是您无法在该实例上进行负载测试,因为它在小型虚拟机上运行-因此,不要指望它具有很高的性能。 。它也对源自单个IP的并发连接数有限制。如果您希望可以与我们联系,我们很乐意看看我们是否可以支持您的用例。您可以在vernemq dot com的信息信中写信给我们,或在此处填写联系表:vernemq.com/services.html
Lars

1
谢谢,我不需要进行负载测试,只需检查我可以连接到其他代理并查看是否存在任何兼容性问题。
罗斯

1
这让我想起,公共版本相对较旧-我将看看是否无法将其升级到今天的最新版本。
Lars Hesel Christensen

5

HiveMQ似乎提供各种选项来保留会话数据,包括QoS 1/2消息。

持久性选项在此处列出:

  • 文件持久性
  • 内存中的持久性

默认情况下,HiveMQ将使用文件持久性,它将所有数据保存到磁盘,以便可以随时对其进行检索。

为了保证代理重新启动之间的数据一致性,默认情况下,HiveMQ使用磁盘持久性。这意味着即使代理停止或崩溃,所有数据也将被保留,并且在重新启动后,代理可以继续其操作,就好像什么都没有发生一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.