我的用例是通过SMTP出站端点发送邮件。
我使用带有ackMode="MULE_AUTO"
的Mule AMQP Connector。
我尝试使用回滚异常策略,但这似乎不起作用。
有人知道是否有可能拒绝并重新排队邮件?
(Mule ESB CE 3.7.0 - Mule AMQP Transport 3.6.2.20150520)
答案 0 :(得分:1)
是的,这是可能的。
您需要使用ackMode=Manual
1)对于成功案例:您需要在流程结束时使用<amqp:acknowledge-message />
手动确认消息,或者您在逻辑消息中的感觉可以被确认。
2)对于失败场景:验证错误等,当异常抛出时,它将被捕获异常策略 - 使用<amqp:reject-message />
。它有助于拒绝消息。
3)对于连接异常:在catch异常策略中使用<amqp:reject-message requeue="true" />
,它将再次将原始消息推回到同一队列。参考:https://github.com/mulesoft/mule-transport-amqp/blob/master/GUIDE.md#manual-message-acknowledgement-and-rejection
第二个和第三个场景都需要在异常策略中处理。因此,请使用ChoiceException strategy
使用其中catch exception strategy
定义一个用于验证错误&#39;和其他与连接异常&#39;。参考:https://docs.mulesoft.com/mule-user-guide/v/3.7/choice-exception-strategy
注意:使用Manual ack
时,无论成功/失败情况如何,都需要在外部手动确认或拒绝消息。缺少任何保留队列中的消息。