我想從SMTP端點捕捉錯誤(例如,如果配置錯誤或服務器關閉),並且發生這種情況時,請阻止郵件繼續正常路徑,進入例外流程。異常處理程序起作用,並將消息路由到異常流程中。令人意想不到的是,該消息是重複的,並且也繼續進行「正常」流程。我希望它只能朝着一個方向發展:如果電子郵件發送成功,則進入正常端點,如果發送失敗進入異常端點。騾流執行意外地在SMTP發送錯誤時分裂
在下面所提供的例子中,SMTP與的UnknownHostException失敗,消息進入failureEndpoint但由於某些原因在消息中的outboundEndpoint也結束了:
<mule><!-- namespaces omitted for readability -->
<flow name="sample-flowFlow1" doc:name="sample-flowFlow1">
<inbound-endpoint ref="inboundEndpoint" doc:name="AMQP Consumer"/>
<smtp:outbound-endpoint host="foobaz" to="[email protected]" from="[email protected]" subject="test" responseTimeout="10000" doc:name="SMTP"/>
<outbound-endpoint ref="outboundEndpoint" doc:name="AMQP Publisher"/>
<exception-strategy ref="FailureNotification" doc:name="Publish failure notification" />
</flow>
<catch-exception-strategy name="FailureNotification">
<flow-ref name="FailureNotificationFlow" doc:name="Flow Reference" />
</catch-exception-strategy>
<sub-flow name="FailureNotificationFlow" doc:name="FailureNotificationFlow">
<outbound-endpoint ref="failureEndpoint" doc:name="Failure Endpoint"/>
</sub-flow>
</mule>
當消息是發佈在inboundEndpoint和SMTP連接器上的錯誤配置方式是在提供的示例中完成的,我希望僅在failureEndpoint中看到該消息,而不是在outboundEndpoint和failureEndpoint中。我該如何做到這一點?
Mule版本:3.4.0
感謝您的一個很好的答案,使用processingStrategy =「同步」確實解決了問題! –