XML配置

provider.xml 示例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">  
    <dubbo:application name="hello-world-app"  />  
    <dubbo:registry address="multicast://224.5.6.7:1234" />  
    <dubbo:protocol name="dubbo" port="20880" />  
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />  
    <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />  
</beans>

标签如下所示:

  • <dubbo:service/>:用于暴露一个服务
  • <dubbo:reference/>:用于创建一个远程服务代理,一个引用可以指向多个注册中心
  • <dubbo:protocol/>:用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
  • <dubbo:application/>:用于配置当前应用信息,不管该应用是提供者还是消费者
  • <dubbo:registry/>:用于配置连接注册中心相关信息
  • <dubbo:module/>:(可选)用于配置当前模块信息
  • <dubbo:monitor/>:(可选)用于配置连接监控中心相关信息
  • <dubbo:provider/>:(可选)当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值
  • <dubbo:consumer/>:(可选)当 ReferenceConfig 某属性没有配置时,采用此缺省值
  • <dubbo:method/>:用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
  • <dubbo:argument/>:用于指定方法参数配置

配置覆盖关系

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。
建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。

属性配置

如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。
Dubbo 将自动加载 classpath 根目录下的 dubbo.properties,可以通过JVM启动参数 -Ddubbo.properties.file=xxx.properties 改变缺省配置位置。

映射规则
将 XML 配置的标签名,加属性名,用点分隔,多个属性拆成多行:
比如:

  • dubbo.application.name=foo等价于<dubbo:application name="foo" />
  • dubbo.registry.address=10.20.153.10:9090等价于<dubbo:registry address="10.20.153.10:9090" />

如果 XML 有多行同名标签配置,可用 id 号区分,如果没有 id 号将对所有同名标签生效:
比如:

  • dubbo.protocol.rmi.port=1234等价于<dubbo:protocol id="rmi" name="rmi" port="1099" /> *dubbo.registry.china.address=10.20.153.10:9090等价于<dubbo:registry id="china" address="10.20.153.10:9090" /> 下面是 dubbo.properties 的一个典型配置:
dubbo.application.name=foo
dubbo.application.owner=bar
dubbo.registry.address=10.20.153.10:9090

覆盖策略

dubbo 配置 ak sk_dubbo 配置 ak sk


JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。

XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。

Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。

API配置

略(不喜欢这种配置)

注解配置