2016-06-17 4 views
1

私のユースケースは、SMTPの送信エンドポイント経由でメールを送信しています。Mule ESBのメッセージを拒否して再キューするAMCのackModeを持つコネクタMULE_AUTO

    すべてがOKである場合は、メッセージが確認され
  • 検証エラー(たとえば、不正な形式の電子メールが)、私はメッセージを拒否したい
  • SMTPサーバーへにConnectionExceptionがあり、I 1分待って、もう一度試してみるためにメッセージを拒否し、再キューしてみてください。

私はackMode="MULE_AUTO"でミュールAMQPコネクタを使用します。

  • フローが正しく処理されると、Muleはメッセージを自動的に確認します。
  • キャッチ例外戦略でエラーが発生すると、メッセージは拒否され、不要文字交換(再キューなし)に送信されます。

ロールバック例外戦略を使用しようとしましたが、動作しないようです。

メッセージを拒否して再キューに入れることができるかどうかは知っていますか?

(ミュールESB CE 3.7.0 - ミュールAMQP交通3.6.2.20150520)

+0

返信とコメントありがとうございます。私は 'ackMode =" MULE_AUTO "では不可能と思われるのと同じ解決策になった。 –

答えて

1

はいそれは可能です。

あなたは成功のシナリオの場合)ackMode=Manual

1を使用する必要があります手動で流れや場所、あなたのロジックメッセージに感じるの終わりに<amqp:acknowledge-message />を使用してメッセージを確認する必要が認められることができます。

2)障害シナリオの場合:検証エラーなど、例外がスローされるとcatch例外戦略でキャッチされます - <amqp:reject-message />を使用します。メッセージを拒否するのに役立ちます。

3)接続例外の場合:キャッチ例外戦略では、<amqp:reject-message requeue="true" />を使用して元のメッセージを再び同じキューに戻します。参照:https://github.com/mulesoft/mule-transport-amqp/blob/master/GUIDE.md#manual-message-acknowledgement-and-rejection

第2シナリオと第3シナリオの両方を例外戦略で処理する必要があります。したがって、ChoiceException strategyを使用してください。ここでは、「妥当性検査エラー」と「接続例外」の2つを定義しています。catch exception strategy参照:https://docs.mulesoft.com/mule-user-guide/v/3.7/choice-exception-strategy

注:成功/失敗のシナリオに関係なく、Manual ackを使用する場合は、メッセージを外部で手動で承認または拒否する必要があります。キューに存在するメッセージを保持しない。

関連する問題