一、dubbo配置之间的关系:
左边是服务提供方的相关配置,右边是服务消费方的相关配置。中间是两方的共享配置。下边是方法和方法参数的相关配置。
ReferenceConfig继承ConsumerConfig,ServiceConfig继承ProviderConfig。如果没有进行Reference和Service的配置,默认是Consumer和Provider的配置。
二、配置覆盖关系:
1、方法级优先,接口级次之,全局配置再次之。(级别小的优先)
2、如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过URL经由注册中心传递给消费方。
(配置的查找顺序,其他retries,loadbalance,actives等类似)
三、标签:
四、举例
1、项目中的配置
dubbo.xml的配置如下:
<!-- 应用信息,用于计算依赖关系 -->
<dubbo:application name="basicInfoservice"/>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" register="${dubbo.registry.register}"/>
<!--使用dubbo协议,basicInfoservice应用的端口为20881-->
<dubbo:protocol name="dubbo" port="20881"/>
<!--提供方的超时时间为3s-->
<dubbo:provider timeout="3000"/>
<!--消费方的超时时间为3s-->
<dubbo:consumer check="false" timeout="3000"/>
<!--需要引用的服务-->
<dubbo:reference id="dictionaryFacade" interface="com.dmsdbj.itoo.singleTableMaintain.facade.DictionaryFacade" />
<!--需要暴露的服务-->
<dubbo:service id="studentFacade" interface="com.dmsdbj.itoo.basicInfo.facade.StudentFacade" />
<!--studentFacade服务的超时时间为30s,addStudent方法的超时时间为60s-->
<dubbo:service id="studentFacade" interface="com.dmsdbj.itoo.basicInfo.facade.StudentFacade" timeout="30000"
loadbalance="roundrobin" >
<dubbo:method name="addStudent" timeout="60000"/>
</dubbo:service>
dubbo-server.properties配置如下:
dubbo.registry.address=zookeeper://192.168.22.156:2181?backup=192.168.22.154:2181,192.168.22.156:2182
dubbo.basicInfo.group=basicInfo
dubbo.basicInfo.version=1.0.0
dubbo.registry.register=false
上述实例,我们的全局的超时时间为3s,负载均衡策略为随机,student服务的超时时间为30s,负载均衡策略为轮询。addStudent的超时时间为60s。
2、
<dubbo:annotation package="com.dmsdbj.itoo.basicInfo.facade"/>
这段配置的作用是开启注解扫描。
开启注解之后,就可以使用@Reference和@Service来订阅服务或者暴露服务啦。需要注意的是@Service并不是Spring的注解,而是
dubbo的注解 import com.alibaba.dubbo.config.annotation.Service;
也可以说<dubbo:reference>标签+@Autowired等价于<dubbo:annotation package="">+@Reference。