在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)。