【发布时间】:2015-01-07 06:06:44
【问题描述】:
HiveMQ 为持久性功能提供了哪些选项?默认情况下是基于文件的吗?如果需要,我们可以将其更改为数据库吗?
我试图在网上找到一些东西,但我能想到的只是这个MQTT-SQL-Database Plugin,它使用 MySQL db 在消息到达时存储消息。我想将用户订阅、统计数据和任何其他数据等所有内容都保存到数据库中。目前,如果我重新启动代理,所有数据都会丢失。
【问题讨论】:
标签: hivemq
HiveMQ 为持久性功能提供了哪些选项?默认情况下是基于文件的吗?如果需要,我们可以将其更改为数据库吗?
我试图在网上找到一些东西,但我能想到的只是这个MQTT-SQL-Database Plugin,它使用 MySQL db 在消息到达时存储消息。我想将用户订阅、统计数据和任何其他数据等所有内容都保存到数据库中。目前,如果我重新启动代理,所有数据都会丢失。
【问题讨论】:
标签: hivemq
免责声明:我正在为 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,如果您有更深入的问题,请查看此链接。
【讨论】: