前言
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=“true”。
可以通过 check=“false” 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。
另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,如果 check=“false”,总是会返回引用,当服务恢复时,能自动连上。
示例
一.通过 spring boot的properties 配置文件,
1.(服务者)关闭注册中心启动时检查 (注册订阅失败时报错):
spring.dubbo.registry.check= false
2.(消费端)关闭所有服务的启动时检查 (没有提供者时报错):
spring.dubbo.consumer.check=false
3.关闭某个服务的启动时检查 (没有提供者时报错):
spring.dubbo.reference.com.sxkj0555.UserService.check=false
spring.dubbo.reference.check=false
二.通过spring配置文件
1.关闭某个服务的启动时检查 (没有提供者时报错):
<dubbo:reference interface="com.sxkj0555.UserService" check="false" />
2.关闭所有服务的启动时检查 (没有提供者时报错):
<dubbo:consumer check="false" />
3.关闭注册中心启动时检查 (注册订阅失败时报错):
<dubbo:registry check="false" />
总结
检查设置check=“true”,当不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题。如果 check=“false”,总是会返回引用,当服务恢复时,能自动连上。所以根据情况自行调整。