啟動時檢查
啟動時檢查依賴服務是否可用
功能描述
默認情況下,Dubbo 會在啟動時檢查依賴服務是否可用,不可用時會拋出異常,阻止 Spring 初始化完成,以便在上线时及早发现问题。默認值為 check="true"
。
可以通过 check="false"
关闭检查。例如,测试时,有些服务不关心,或者循环依赖,必须有一方先启动。
另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,获取到 null 引用,如果 check="false"
,总是返回引用,当服务恢复时,能自动连上。
使用場景
- 單向依賴:有依賴(建議默認設置)和無依賴(可設置 check=false)
- 相互依賴:即循環依賴,(不建議設置 check=false)
- 懶加載處理
check 只用於啟動時檢查,如果運行時沒有對應的依賴,仍然會報錯。
使用方法
通過 spring 配置文件
關閉某個服務的啟動檢查
<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.consumer.check=false
dubbo.registry.check=false
通過 -D 參數
java -Ddubbo.reference.com.foo.BarService.check=false
java -Ddubbo.consumer.check=false
java -Ddubbo.registry.check=false
配置含義
dubbo.reference.com.foo.BarService.check
,覆蓋 com.foo.BarService
引用的 check 值,即使配置中已有聲明,也會被覆蓋。
dubbo.consumer.check=false
是設置引用的 check 的默認值,如果配置中已有明確聲明,如:<dubbo:reference check="true"/>
,則不受影響。
dubbo.registry.check=false
,前兩個表示訂閱成功,但無論提供者列表是否為空或是否報告錯誤,如果註冊訂閱失敗,也允許啟動,你需要使用此選項,並將在後台定期重試。
上次修改時間:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)