【发布时间】:2021-12-05 23:22:28
【问题描述】:
我有一个状态主题,通过 ActiveMQ (docker rmohr/activemq:5.15.9) 使用 QoS 1 和保留消息 = true 发布。我希望我的仪表板能够延迟订阅主题并始终收到最后发布的消息。
保留的功能似乎运行良好,但消息似乎在 ActiveMQ 代理重新启动时被清除。
如果我停止发布到主题,重新启动代理,并尝试延迟订阅,我不会收到最后一条消息(在代理重新启动之前保留的消息)。
我使用默认容器配置(为 data/ 和 conf/ 安装的 kahadb 和文件系统目录)。我以为保留的消息会在 kahadb 中,但它是空的。在代理重新启动后,ActiveMQ ui 还会显示主题的空队列。
这是预期的行为?我可以通过使用 ActiveMQ 重新启动代理来实现保留消息的持久性吗?我应该如何进行?
【问题讨论】:
-
看起来这是一个known issue,似乎有一个fix,但如果我没看错,它只适用于v5.16+。
-
我刚刚使用 5.16.3 进行了测试,现在我们可以在 kahadb 中看到这些消息。但是它们仍然不会在代理重新启动时发送给迟到的订阅者。有什么想法吗?
-
我们能够通过切换到 RabbitMQ 来解决我们的问题。