我想从 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="test@example.com" from="test@example.com" 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 中。我该如何做到这一点?
骡版本:3.4.0