0

在 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 不应执行,并且消息应路由到死信交换。如果消息在任何阶段都没有失败,则应将其写入队列。

4

2 回答 2

1

要完全按照您的期望设置一个 catch-exception-strategy,其出站端点指向您的 DLQ。

但是,就我个人而言,我宁愿利用 rabbit 的(或您正在使用的提供者)功能进行 DLQ:https ://www.rabbitmq.com/dlx.html 。

于 2015-01-14T16:56:00.147 回答
0

AMQP 传输提供了手动消息确认或拒绝的功能(文档。如果您拒绝消息,并且队列被配置为使用 DLX,则消息将由代理路由到那里。

尝试按照 Victor Romero 的建议使用 catch-exception-strategy 配置流,并使用它<amqp:reject-message />来拒绝消息。确保也配置要使用的连接器ackMode="MANUAL"

于 2015-01-15T14:40:57.410 回答