发送到持久 address/queue 的 STOMP 消息在重启后无法幸存

STOMP messages sent to durable address/queue not surviving reboots

我开始使用 ActiveMQ Artemis 并想将 STOMP 消息发送到队列:

<address name="/queue/default">
    <multicast>
        <queue name="/queue/default">
            <durable>true</durable>
        </queue>
    </multicast>
</address>

据我所知,我已尽最大努力使此队列中的消息在重启后仍然存在,但由于某种原因,当我重启我的代理时,所有消息都走了。

在这种情况下我会遗漏什么可能导致这种情况发生?

如果没有关于您如何发送消息的更多详细信息,很难自信地回答,但我猜您没有在消息上设置正确的 header 以表明它应该是durable/persistent。 STOMP 规范没有概述消息在这方面的行为,因此由消息提供者(即本例中的 ActiveMQ Artemis)来确定行为。默认情况下消息不会是 durable/persistent 所以你必须将消息上的 persistent header 设置为 true 以使消息 durable/persistent.

还值得注意的是,queues 默认情况下是持久的,因此您实际上不需要在定义中使用 <durable>true</durable>,因为它是多余的。