在ActiveMQ中手动创建死信队列

时间:2019-08-05 08:34:58

标签: activemq spring-jms dead-letter

Is it possible to have dead letter queue for individual queues之后,我可以为ActiveMQ实例中的每个队列配置一个不同的死信队列。

我正在使用spring-jms来监听死信队列,但是我被迫将ConnectionFactory与访问权限降低的用户混淆(以至于他无法创建队列);这是由于以下原因。

具体来说,假设我的队列名为orders,并且我将ActiveMQ配置为对DLQ.orders使用者拒绝的邮件使用死信队列orders。现在, 例如,如果spring-jms ConnectionFactory是由admin/admin用户配置的,那么我的Spring应用程序中出现的@JmsListener(destination="DLQ.orders")会导致在ActiveMQ中创建名称为{{ 1}},但是被拒绝的消息将不会进入该队列;相反,他们将转到默认的ActiveMQ死信队列DLQ.orders。如果我尝试通过管理界面自己创建死信队列DLQ.ActiveMQ,也会发生同样的情况。

如果在另一方面,DLQ.orders被配置为具有减少的访问权限的用户,则ActiveMQ将在消息第一次被ConnectionFactory拒绝时创建队列DLQ.orders。消费者。在这种情况下,orders将正常工作(即,被拒绝的邮件将到达那里,而不是到达DLQ.orders)。

但是在这种情况下,由于最初没有名称为DLQ.ActiveMQ的队列,Spring将定期尝试并无法与队列DLQ.orders建立连接,直到消息最终被队列拒绝。 DLQ.orders的使用者,并创建队列orders

所以我想问的是,是否有一种方法可以在ActiveMQ实例上手动创建队列DLQ.orders,从而可以正确识别该队列并将其用作队列的死信队列{ {1}}(我所指的ActiveMQ版本是最新版本5.15.9)。

0 个答案:

没有答案