配置的官方网址http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html
1、配置原则
1 .properties加载顺序
1-1dubbo.properties 加载顺序 优先1,其次2 ,最后3
上面图中的顺序对应下面的3中情况
1.JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
2.XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。相当于和spring整合项目里的provider.xml,与springboot整合的application.properties文件
3.Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名
为了便于测试效果,我们在boot-user-service-provider项目中创建一个dubbo.properties文件
我们只修改对应的端口号,便于区分
1.虚拟机参数 -Ddubbo.protocol.port=20880
2.application.properties文件中的修改
3.dubbo.properties文件中的配置 只需配置一行端口号
dubbo.protocol.port=20882
运行启动程序 开后台日志信息
1.设计虚拟机参数 ,对应的两个配置文件也配置好了,优先加载的20880 虚拟机参数是优先
2. 删除虚拟机参数,看另外两个的顺序,先加载application.properties 文件
3.注释掉application.properties文件中的配置 ,最后加载的是dubbo.properties文件
2、启动时检查
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"
。
可以通过 check="false"
关闭检查,调用的时候才回去检查调用的服务是否启动,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。
另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,如果 check="false"
,总是会返回引用,当服务恢复时,能自动连上。
如图即使我们注释掉了user-service-consumer 项目中的条用的代码,依然是报错的
当我们修改配置comsumer.xml文件中 增加check="false" 这个配置再看控制台的消息
<!-- 调用的服务 -->
<dubbo:reference id="userService" interface="com.atguigu.gmail.service.UserService"
check="false"/>
可以看到增加一段配置后控制台没有报错了
这个只是一个消费服务这的服务不检查,如果实际的项目的服务消费者比较多,我们一一的配置比较麻烦,还有一个中同一配置消费服务不检查的配置还是在consumer.xml文件中 增加,效果和上面的是一样
<!-- 配置当前消费者同一规则:所有的服务都不检查 -->
<dubbo:consumer check="false"></dubbo:consumer>
3、超时时间
由于网络或服务端不可靠,会导致调用出现一种不确