Я хотел бы перехватывать ошибки из конечной точки 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. Как мне это сделать?
Версия мула: 3.4.0