HiveMQ Persistence如何运作?

时间:2015-01-07 06:06:45

标签: hivemq

HiveMQ为持久性功能提供了哪些选项?是默认情况下的文件吗?如果需要,我们可以将其更改为数据库吗?

我试图在网上找到一些东西,但我能想出的就是这个MQTT-SQL-Database Plugin使用MySQL db来存储消息。我想将用户订阅,统计数据和任何其他数据等所有内容保存到数据库中。目前,如果我重新启动代理,则所有数据都将丢失。

1 个答案:

答案 0 :(得分:2)

免责声明:我在HiveMQ背后的公司工作

HiveMQ 1.x和2.x默认使用基于文件的持久性(文件驻留在 data 文件夹中)。这对大多数用例非常有效。您可以将持久性更改为例如使用infinispan.xml文件的数据库,不推荐这样做,但。该数据实际上是针对HiveMQ内部的,不得在外部进行修改。

另请注意,统计数据是短暂的,不会保留,因此重启后无法生存。如果客户端使用持久会话连接,则用户订阅将重新启动。

我认为解决您的用例(保留所有数据,如统计信息,订阅等)的最佳方法是使用功能强大的HiveMQ plugin system。您可以使用Services随时获取有关订阅,客户端,保留消息等的数据。另一种方法是使用the Callbacks provided by HiveMQ。您可以拦截代理中的几乎每个方面(例如,当统计信息更新时,有人订阅,客户端断开连接,......)。

如果您觉得直接深入挖掘代码感觉更舒服,请查看此示例hello-world project on Github,它使用了相当多的回调和服务。开始真的很容易。如果您想了解如何集成数据库连接池,请查看this example project

询问HiveMQ相关问题的最佳方法是使用HiveMQ support forum,如果您有更深入的问题,请查看此问题。