【发布时间】:2020-03-29 09:13:07
【问题描述】:
我有两个组件通过 wildfly 实例中的 jms 队列进行通信。一旦队列的消费者断开连接或停止,消息就会被转发到 DLQ(至少在 wildfly 重新启动时)。
是否可以将 wildfly 配置为在消费者重新连接到队列后立即从 DLQ 自动重新传递消息?
一些细节
Wildfly 版本:8.2.0
standalone.xml - 据我所知,没什么特别的
<jms-destinations>
<jms-queue name="ExpiryQueue">
<entry name="java:/jms/queue/ExpiryQueue"/>
<durable>false</durable>
</jms-queue>
<jms-queue name="DLQ">
<entry name="java:/jms/queue/DLQ"/>
<durable>false</durable>
</jms-queue>
...
<jms-queue name="Q1-Producer-to-Consumer">
<entry name="java:/queue/Q1-Producer-to-Consumer"/>
<entry name="java:jboss/exported/queue/Q1-Producer-to-Consumer"/>
<durable>false</durable>
</jms-queue>
</jms-destinations>
谢谢。
【问题讨论】:
-
如果您有 RedHat 帐户,请查看this article。它的要点是,如果您的 DLQ 仅包含来自单个队列的消息,您可以在该队列上使用
move-messagesCLI 操作,否则您需要编写一个将读取消息的消费者/生产者,从消息属性中提取它们的来源(可能是“_AMQ_ORIG_QUEUE”)并将它们写回到有问题的队列中。