设置:
设置基本上工作正常,除了我添加一个监听 DLQ 的
@JmsListener
。
所以我有多个
JmsListener
,其中一个监听常规队列q1
。如果操作失败两次,消息将移至指定的 DLQ DLQ.q1
。
只要此时没有
DLQ.q1
的活跃消费者,此方法就有效。消息存储在 DLQ 中。
一旦启用
JmsListener
的消费者 (DLQ.q1
),来自 q1 的死信就不会出现在 DLQ 中,也不会被消耗。消息、添加的消息总数以及 DLQ 中删除的消息仍然显示 0。
使用直接发送到 DLQ 的消息也可以。
DLQ 上有活动侦听器时会出现问题吗?有什么特别需要注意的吗?
我想我现在可以回答我自己的问题了。
当
@JmsListener
上有 DLQ.q1
时,会自动创建此队列(如果在代理中启用了自动创建队列设置)。这个队列有地址=名称,所以address=DLQ.q1;name=DLQ.q1
。
当没有监听器并且由于死信消息而自动创建 DLQ 时,将使用
address=DLA;name=DLQ.q1
创建队列
要从
DLA.DLQ.q1
接收,JMS 监听器必须像这样设置:
@JmsListener(destination = "DLA::DLQ.q1")