啟動時檢查

啟動時檢查依賴服務是否可用

功能描述

默認情況下,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)