发送到持久 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>
,因为它是多余的。
我开始使用 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>
,因为它是多余的。