2016-03-23 9 views
0

以下のエンドポイントプロパティを使用しましたが、再試行ヒットを停止したいのに、やはり再試行します。成功か失敗かにかかわらず、エンドポイントに1回だけヒットします。WSO2での再試行を停止ESBエンドポイント

<endpoint name="DecisionGatewayProxy_EPR"> 
    <address uri="http://XXXX:8280/soap/XXXX"> 
     <timeout> 
      <duration>20000</duration> 
      <responseAction>fault</responseAction> 
     </timeout> 
      <markForSuspension> 
      <errorCodes>101504, 101505</errorCodes> 
      <retriesBeforeSuspension>0</retriesBeforeSuspension> 
      <retryDelay>1</retryDelay> 
     </markForSuspension> 
     <suspendOnFailure> 
      <errorCodes>101500, 101501, 101506, 101507, 101508</errorCodes> 
      <initialDuration>20000</initialDuration> 
      <progressionFactor>0.0</progressionFactor> 
     </suspendOnFailure> 
    </address> 
</endpoint> 

答えて

0

WSO2 ESBでは実行できないと思います。提案として、成功または失敗に関係なくサーバーからの応答を送信してください(少なくとも202 ACCEPTEDを送信してください)。その後、同じメッセージを送信するために再試行しません。

+0

ここにコメントを投稿してくれてありがとう、本当に感謝しています。 202ステータスを送信して再試行しないようにする例があれば教えてください。 –

+0

何も変更されていない場合は、httpサーバーを作成して202を返すことができます。 – richard

1

AFAIKデフォルトの動作では、1つのリクエストが送信されます。それが失敗するとESBはそれをタイムアウトとマークします.SIMOはタイムアウト時に自動的に再試行しません。しかし、エンドポイントをSUSPENDEDとマークする必要がある場合は、<retriesBeforeSuspension>0</retriesBeforeSuspension> の値を1にすることができます。これは、単一エンドポイントの障害後にエンドポイントSUSPENDEDをマークします。

これが役に立ちます。

+0

リトライポリシーを設定すると、esbは自動的にメッセージをエンドポイントに再送信する(メッセージ/シーケンスが再生される)ことは確かですか?それは私のために働いている方法はまだ100%明確ではありません。 – Nicolas

関連する問題