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 コネクタが提供された例のように誤って構成されている場合、outboundEndpoint と failureEndpoint の両方ではなく、failureEndpoint でのみメッセージを表示したいと考えています。どうすればこれを達成できますか?
ミュールのバージョン: 3.4.0