SOAP要求を送信し、その応答を処理するビジネスプロセスに対してCamel再配信ポリシーを使用するエラーハンドラを実装する必要があります。プロセス部分の間、特別な例外(RetryException)がスローされる可能性があります。この例外は、エラーハンドラレベルで(onException(RetryException.class)のおかげで)捕捉されます。 それは簡単な部分でした。再配信中にCamelの例外を無視する方法
ここでは、cxfエンドポイント(例の接続エラーの場合)によってスローされる可能性のある例外を無視して処理したいと考えています。 は、だから私は試してみてください。
- (1)2を再生して確認するために、再試行戦略(noErrorHandlerをと持っている)2つのルートを集約
- (2)一つの副経路とonExceptionを句を持っている一つのメインルート例外をスローするルートと処理ではない場合のみ:
- (3)SOAPリクエストを送信経路
- (4)応答を処理しretryExceptionを投げることができる経路。それは魔法のように動作
public void configure() { from(ROUTE_NAME). .handleFault() // To handle Soap fault .onException(Fault.class) .continued(true) .end() .to("cxf:[...]") ; }
は、応答処理をする前にいくつかのチェックを行います。私は(3)そのようにルートを実装CXFエンドポイントによってスローされた例外を無視するために
RetryExceptionをスローします...しかし、継続命令は、私が以前に持っていた再配信に関するすべての情報を捨て去り、この例外が最初であるとCamelは信じています。ルートは一種の再試行の永遠のループに入ります。
Headers: {breadcrumbId=ID-ITEM-S28636-63117-1469800853403-0-1, operationName=[...]}
あなたには、いくつかのサブルート例外を無視するすべてのソリューションを持っていました:為替ヘッダが onExceptionを(障害)の後
Headers: {breadcrumbId=ID-ITEM-S28636-63117-1469800853403-0-1, CamelRedelivered=true, CamelRedeliveryCounter=1, CamelRedeliveryMaxCounter=2, operationName=[...]}
: onExceptionを(故障)前
為替ヘッダ上位ルートの再試行戦略を消去することなく?
ありがとうございますが、doTryとdoCatchを使用して別の方法で行っています。 –