Mule:使用Mule将消息路由到AMQP端点的死信交换

时间:2015-01-14 16:42:11

标签: rabbitmq mule amqp mule-component

在mule中使用AMQP连接器并尝试实现特定用例,如果消息未通过业务过滤标准而不是将其写入输出队列,则应将其路由到死信。建议实现这一目标的最佳方法。 示例代码:

<mule>
<flow> 
<message source>
<message processor1>
<message processor2>
<message processor3>
<message processor4>
<message processor5>
<amqp:outbound-endpoint>
</flow>
</mule>

实现功能的最佳方式,如果消息在任何消息处理器中失败,则后续消息处理器不应执行,并且消息应转发到死信交换队列。因此,如果它在消息处理器2中失败,则消息处理器3,4和5不应该执行,并且消息应该被路由到死信交换。如果消息在任何阶段都没有失败,则应将其写入队列。

2 个答案:

答案 0 :(得分:1)

要完全按照您的预期进行操作,只需设置一个catch-exception-strategy,其出站端点指向您的DLQ。

但是,我个人宁愿利用DLQ的兔子(或你正在使用的提供者)功能:https://www.rabbitmq.com/dlx.html

答案 1 :(得分:0)

AMQP transport提供手动邮件确认或拒绝功能(documentation)。如果您拒绝某条消息,并且该队列配置为使用DLX,那么该消息将由代理路由到那里。

尝试使用Victor Romero建议的catch-exception-strategy配置流,并使用<amqp:reject-message />拒绝该消息。请务必将连接器配置为使用ackMode="MANUAL"