我們在使用dubbo的過程中一定對於下面的配置十分熟悉:
<dubbo:reference id="xx" interface="xx" retries="2" timeout="3000"/>
下面來解釋一下各參數的含義:
1.timeout="3000" ,服務調用的超時時間,調用服務的過程中如果達到3秒就會報超時異常,超時異常后客戶端會進行嘗試設定的“retries”次調用。有一個需要注意的地方,timeout只有在超時異常才有效,如果是其他異常導致dubbo服務調用拋異常,會立即進入下一次嘗試。
2.retries="2" ,即重試兩次,如果失敗就拋出異常。
我們在開發過程中應謹慎使用Dubbo的超時重試機制,分別從超時和重試兩個角度來說說。
超時方面,舉個例子。如果調用的服務處理的時間較長,而我們設定的timeout時間太短,這時候就會出現服務端到了超時時間,dubbo會進行重試,然而無論重試多少次,結果還是會失敗。
重試方面,舉個例子。並不是所有業務都適合重試的,例如某些不能重復請求的接口,如下訂單、注冊等等。