私は外部レストサービスを呼び出すルートを持っています。エラーハンドラを以下のように設定しました。私は何をしたいかApace Camel:カスタム再配送ポリシー
errorHandler(deadLetterChannel("jms:dlc").maximumRedeliveries(3));
:
外部APIへの接続が失敗した場合、私は3回を再試行してから、APIコールに問題がない場合は
をdeadLetterChannelに送信する、Iステータスコードをチェックし、レスポンスをログに記録してからメッセージをdeadLetterChannelに送信します。そのために
私はfalseにthrowExceptionOnFailureを設定します。
私のルートには、最後のエンドポイントとしてBeanがあります。このBeanは外部エンドポイントから応答を受け取り、ステータスをチェックします。
void process(Exchange exchange){
//check http status code
//if not success
exchange.setProperty(Exchange.ROUTE_STOP,true);
//sendToDeadLetterQueue;
}
私の問題は、APIに接続できても再配信が行われることです。私は再配信が間違って起こることを期待しています。しかし、私は応答を処理し、また交換を停止するように設定しています。
Beanからの再配信を停止できますか?
次のようにあなたがonExceptionを使用することができます