0

我有一个状态主题,通过 ActiveMQ (docker rmohr/activemq:5.15.9) 使用 QoS 1 和保留消息 = true 发布。我希望我的仪表板能够延迟订阅主题并始终收到最后发布的消息。

保留的功能似乎运行良好,但消息似乎在 ActiveMQ 代理重新启动时被清除。

如果我停止发布到主题,重新启动代理并尝试延迟订阅,我不会收到最后一条消息(在代理重新启动之前保留的消息)。

我使用默认容器配置(为 data/ 和 conf/ 安装的 kahadb 和文件系统目录)。我以为保留的消息会在 kahadb 中,但它是空的。在代理重新启动后,ActiveMQ ui 还会显示主题的空队列。

这是预期的行为?我可以通过使用 ActiveMQ 重新启​​动代理来实现保留消息的持久性吗?我应该如何进行?

4

1 回答 1

-1

除非客户端发布空的保留消息,否则保留消息在任何情况下都不应丢失

你可以切换到 EMQ x 来避免这个问题。您可以将数据存储在磁盘或您喜欢的数据库中

于 2021-10-25T09:46:08.747 回答