dubbo訪問超時重試,設定retries 0無效

2021-08-30 11:04:24 字數 747 閱讀 1161

**:

目前專案使用dubbo框架,但是服務因為業務場景需要,不能有重試策略。所以在provier上加上retries=0,但是發現不起作用。

然後通過debug原始碼,找到問題所在:

在包com.alibaba.dubbo.rpc.cluster.support的failoverclusterinvoker類中發現

在這裡,如果配置 retries=n 。如果 n > 0 總呼叫次數= n + 1 ; 否則 總呼叫次數 = 1 ;這樣看好像也沒有錯。但是為什麼配置=0不行呢,繼續找

在包com.alibaba.dubbo.config的abstractconfig類中發現

看到這裡大致就明朗了,serviceconfig和referenceconfig會分別在攔截@service和@reference註解,最後就將註解中的屬性加到註冊url中

@reference(version = "1.0.0", timeout = 10000,retries=-1)

哈哈哈設定成為 -1 果然好使了!! 親測有效!

Dubbo的超時重試機制

我們在使用dubbo的過程中一定對於下面的配置十分熟悉 下面來解釋一下各引數的含義 1.timeout 3000 服務呼叫的超時時間,呼叫服務的過程中如果達到3秒就會報超時異常,超時異常後客戶端會進行嘗試設定的 retries 次呼叫。有乙個需要注意的地方,timeout只有在超時異常才有效,如果是...

dubbo重試機制原理 Dubbo超時和重連機制

dubbo啟動時預設有重試機制和超時機制。超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次呼叫失敗,重試機制在出現呼叫失敗時,會再次呼叫。如果在配置的呼叫次數內都失敗,則認為此次請求異常,丟擲異常。如果出現超時,通常是業務處理太慢,可在服務提供方執行 jstack pid j...

dubbo超時重試和服務降級

超時是針對消費端還是服務端?dubbo的超時是針對客戶端的 超時的實現原理是什麼?dubbo預設採用了netty做為網路元件,它屬於一種nio的模式。消費端發起遠端請求後,執行緒不會阻塞等待服務端的返回,而是馬上得到乙個responsefuture,消費端通過不斷的輪詢機制判斷結果是否有返回。因為是...