创建自定义死信队列

Posted

技术标签:

【中文标题】创建自定义死信队列【英文标题】:Creating custom Dead Letter Queue 【发布时间】:2015-01-14 06:37:31 【问题描述】:

我使用的是activemq 5.10, 我想为我的所有队列创建一个自定义死信队列。

我知道 activemq 本身提供了名为 ActiveMQ.DLQ 的内置 DLQ,但我希望我的自定义 DLQ 保存所有失败的消息。

我也知道我们可以为每个队列创建单独的 DLQ,但这不是我想要的

任何指针都会有所帮助, 谢谢。

【问题讨论】:

接收方无法检测到消息过期。所以没有直接的方法。如何创建转发机制。 MyQ.DLQ -> MyGlobalDLQ 【参考方案1】:

这很简单,但据我所知没有记录。在 sharedDeadLetterStrategy 中指定队列。在 AMQ 5.9.0 中经过验证,但也可以在早期/更高版本中使用。

<deadLetterStrategy>
    <sharedDeadLetterStrategy>
        <deadLetterQueue>
            <queue physicalName="CUSTOMDLQ"/>
        </deadLetterQueue>
    </sharedDeadLetterStrategy>
</deadLetterStrategy>

【讨论】:

【参考方案2】:

这在当前的 ActiveMQ 版本(5.10)中无法做到,因此我们决定创建自定义异常队列并根据特定的异常情况向它们转发消息。

【讨论】:

以上是关于创建自定义死信队列的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ的动态创建交换机、队列、绑定、死信队列,延迟队列代码实现

使用RabbitMQ的死信队列实现延迟消息

使用RabbitMQ的死信队列实现延迟消息

使用RabbitMQ的死信队列实现延迟消息

使用RabbitMQ的死信队列实现延迟消息

RabbitMQ 死信队列