2016-03-23 27 views
0

我已經使用了以下端點屬性,並希望它停止重試命中但仍在重試。我只想要一次命中終點,無論它是成功還是失敗。在WSO2 ESB Endpoint中停止重試

<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接受),然後它不會重試發送相同的消息。

+0

感謝您發表評論,真的很感激。你可以讓我知道如何發送202狀態,以便它不會重試嗎? –

+0

當沒有任何改變時,你可以編寫http服務器返回202。 – richard

1

AFAIK默認行爲是發送一個請求。如果它失敗,ESB會將其標記爲超時。所以IMO不會在超時後自動重試。但是,如果您需要將端點標記爲SUSPENDED,則可以將<retriesBeforeSuspension>0</retriesBeforeSuspension> 的值設爲1.因此,這將標記單個端點發生故障後端點SUSPENDED。

希望這會有所幫助。

+0

這是否可以肯定,如果我們設置了重試策略,esb會自動重新發送消息到終端(消息/序列將被重播)?目前還不清楚它是如何爲我工作的。 – Nicolas