1. 程式人生 > >Dubbo啟動時對服務檢查

Dubbo啟動時對服務檢查

啟動時檢查

Dubbo預設會在啟動時檢查依賴的服務是否可用,不可用時會丟擲異常,阻止Spring初始化完成,以便上線時,能及早發現問題,預設check=true。

如果你的Spring容器是懶載入的,或者通過API程式設計延遲引用服務,請關閉check,否則服務臨時不可用時,會丟擲異常,拿到null引用,
如果check=false,總是會返回引用,當服務恢復時,能自動連上。

可以通過check=”false”關閉檢查,比如,測試時,有些服務不關心,或者出現了迴圈依賴,必須有一方先啟動。
關閉某個服務的啟動時檢查:(沒有提供者時報錯)

<dubbo:reference interface
="com.foo.BarService" check="false"/>

關閉所有服務的啟動時檢查:(沒有提供者時報錯)

<dubbo:consumer check="false"/>

關閉註冊中心啟動時檢查:(註冊訂閱失敗時報錯)

<dubbo:registry check="false"/>

也可以用dubbo.properties配置:

dubbo.reference.com.foo.BarService.check=false
dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry
.check=false

也可以用-D引數:

java -Ddubbo.reference.com.foo.BarService.check=false
java -Ddubbo.reference.check=false
java -Ddubbo.consumer.check=false
java -Ddubbo.registry.check=false

注意區別
dubbo.reference.check=false,強制改變所有reference的check值,就算配置中有宣告,也會被覆蓋。
dubbo.consumer.check=false,是設定check的預設值,如果配置中有顯式的宣告,如:,不會受影響。
dubbo.registry.check=false,前面兩個都是指訂閱成功,但提供者列表是否為空是否報錯,如果註冊訂閱失敗時,
也允許啟動,需使用此選項,將在後臺定時重試。
引用預設是延遲初始化的,只有引用被注入到其它Bean,或被getBean()獲取,才會初始化。
如果需要飢餓載入,即沒有人引用也立即生成動態代理,可以配置:

<dubbo:reference interface="com.foo.BarService" init="true"/>