HiveMQ 为持久性功能提供了哪些选项?默认情况下是基于文件的吗?如果需要,我们可以将其更改为数据库吗?
我试图在网上找到一些东西,但我能想到的只是这个MQTT-SQL-Database Plugin,它使用 MySQL db 在消息到达时存储消息。我想将用户订阅、统计数据和任何其他数据等所有内容保存到数据库中。目前,如果我重新启动代理,所有数据都会丢失。
HiveMQ 为持久性功能提供了哪些选项?默认情况下是基于文件的吗?如果需要,我们可以将其更改为数据库吗?
我试图在网上找到一些东西,但我能想到的只是这个MQTT-SQL-Database Plugin,它使用 MySQL db 在消息到达时存储消息。我想将用户订阅、统计数据和任何其他数据等所有内容保存到数据库中。目前,如果我重新启动代理,所有数据都会丢失。
免责声明:我正在为 HiveMQ 背后的公司工作
HiveMQ 1.x 和 2.x 默认使用基于文件的持久性(文件位于数据文件夹中)。这适用于大多数用例。您可以使用 infinispan.xml 文件将持久性更改为例如数据库,但不建议这样做。这些数据实际上是用于 HiveMQ 内部的,不得在外部进行修改。
还要注意,统计数据是短暂的,不会被持久化,所以这不会在重启后继续存在。如果客户端与持久会话连接,则用户订阅在重新启动后仍然有效。
我相信解决您的用例(保留所有数据,如统计信息、订阅等)的最佳方法是使用强大的HiveMQ 插件系统。您可以随时使用服务获取有关订阅、客户端、保留消息等的数据。另一种方法是使用HiveMQ 提供的回调。您几乎可以拦截代理中的每个方面(例如更新统计信息、订阅用户、断开客户端连接等)。
如果您更愿意直接深入研究代码,请查看Github 上的这个示例 hello-world 项目,它使用了很多回调和服务。这真的很容易上手。如果您想了解如何集成数据库连接池,请查看此示例项目。
询问 HiveMQ 相关问题的最佳方式是使用HiveMQ 支持论坛,因此如果您有更深入的问题,请查看这里。