2016-07-29 2 views
2

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を(故障)前

為替ヘッダ上位ルートの再試行戦略を消去することなく?

答えて

0

私はあなたがdirectエンドポイント経由でルートを接続していると思います。その場合、あなたの主な問題は、Faultと表示され続けていることです。これは、再配送のヘッダーがクリアされる可能性が最も高いと考えられます。 sedaまたはメッセージキューを使用してみることもできますが、基本的にはルートを1つにリンクするので、directエンドポイントではありません。

+1

ありがとうございますが、doTryとdoCatchを使用して別の方法で行っています。 –

関連する問題