目前 Dubbo 在 EDAS 中运行支持两种配置服务提供者和服务消费者的方式:XML 配置、注解配置。本文档提供这两种方式的配置示例。
XML 文件配置方式
以下是 Dubbo XML 配置示例,设置正确则不需要做修改即可直接放入 EDAS 中运行。
服务生产者 XML 配置
- [backcolor=transparent]```xml
- [backcolor=transparent] <?xml version="1.0" encoding="UTF-8"?>
- [backcolor=transparent] <beans xmlns="http://www.springframework.org/schema/beans"
- [backcolor=transparent] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- [backcolor=transparent] xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- [backcolor=transparent] http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- [backcolor=transparent] <dubbo:application name="edas-dubbo-demo-provider" ></dubbo:application>
- [backcolor=transparent] <bean id="demoProvider" class="com.alibaba.edas.dubbo.demo.provider.DemoProvider" ></bean>
- [backcolor=transparent] <dubbo:registry address="zookeeper://127.0.0.1:2181" ></dubbo:registry>
- [backcolor=transparent] <dubbo:protocol name="dubbo" port="20880" threadpool="cached"
- [backcolor=transparent] threads="100" ></dubbo:protocol>
- [backcolor=transparent] <dubbo:service delay="-1" interface="com.alibaba.edas.dubbo.demo.api.DemoApi"
- [backcolor=transparent] ref="demoProvider" version="1.0.0" group="dubbogroup" retries="3" timeout="3000"></dubbo:service>
- [backcolor=transparent] </beans>
- [backcolor=transparent]```
[backcolor=transparent]注意:
- 可选配置包括 threadpool、threads、delay、version、retries、timeout,其他均为必选配置。配置项可以任意调换位置。
- Dubbo 的 RPC 协议支持多种方式,如 RMI, hessian 等,但是目前 EDAS 的适配方案只支持了 Dubbo 协议,如:<dubbo:protocol name="dubbo" port=“20880”>,否则会引起类似于:”com.alibaba.dubbo.config.ServiceConfig service [xx.xx.xxx] contain xx protocal,HSF not supportted” 的错误发生。
服务消费者 XML 配置
- [backcolor=transparent]<?[backcolor=transparent]xml version[backcolor=transparent]=[backcolor=transparent]"1.0"[backcolor=transparent] encoding[backcolor=transparent]=[backcolor=transparent]"UTF-8"[backcolor=transparent]?>
- [backcolor=transparent]<beans[backcolor=transparent] [backcolor=transparent]xmlns[backcolor=transparent]=[backcolor=transparent]"http://www.springframework.org/schema/beans"
- [backcolor=transparent]xmlns:xsi[backcolor=transparent]=[backcolor=transparent]"http://www.w3.org/2001/XMLSchema-instance"[backcolor=transparent] [backcolor=transparent]xmlns:dubbo[backcolor=transparent]=[backcolor=transparent]"http://code.alibabatech.com/schema/dubbo"
- [backcolor=transparent]xsi:schemaLocation[backcolor=transparent]=[backcolor=transparent]"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- [backcolor=transparent]http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"[backcolor=transparent]>
- [backcolor=transparent]<dubbo:application[backcolor=transparent] [backcolor=transparent]name[backcolor=transparent]=[backcolor=transparent]"edas-dubbo-consumer"[backcolor=transparent] [backcolor=transparent]/>
- [backcolor=transparent]<dubbo:registry[backcolor=transparent] [backcolor=transparent]address[backcolor=transparent]=[backcolor=transparent]"zookeeper://127.0.0.1:2181"[backcolor=transparent] [backcolor=transparent]/>
- [backcolor=transparent]<dubbo:reference[backcolor=transparent] [backcolor=transparent]id[backcolor=transparent]=[backcolor=transparent]"demoProviderApi"
- [backcolor=transparent]interface[backcolor=transparent]=[backcolor=transparent]"com.alibaba.edas.dubbo.demo.api.DemoApi"[backcolor=transparent] [backcolor=transparent]version[backcolor=transparent]=[backcolor=transparent]"1.0.0"[backcolor=transparent] [backcolor=transparent]group[backcolor=transparent]=[backcolor=transparent]"dubbogroup"[backcolor=transparent] [backcolor=transparent]lazy[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]loadbalance[backcolor=transparent]=[backcolor=transparent]"random"[backcolor=transparent]>
- [backcolor=transparent]<!-- 指定某个方法不用等待返回值 -->
- [backcolor=transparent]<dubbo:method[backcolor=transparent] [backcolor=transparent]name[backcolor=transparent]=[backcolor=transparent]"sayMsg"[backcolor=transparent] [backcolor=transparent]async[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]return[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]/>
- [backcolor=transparent]</dubbo:reference>
- [backcolor=transparent]<bean[backcolor=transparent] [backcolor=transparent]id[backcolor=transparent]=[backcolor=transparent]"demoConsumer"[backcolor=transparent] [backcolor=transparent]class[backcolor=transparent]=[backcolor=transparent]"com.alibaba.edas.dubbo.demo.consumer.DemoConsumer"
- [backcolor=transparent]init-method[backcolor=transparent]=[backcolor=transparent]"reviceMsg"[backcolor=transparent]>
- [backcolor=transparent]<property[backcolor=transparent] [backcolor=transparent]name[backcolor=transparent]=[backcolor=transparent]"demoApi"[backcolor=transparent] [backcolor=transparent]ref[backcolor=transparent]=[backcolor=transparent]"demoProviderApi"[backcolor=transparent]></property>
- [backcolor=transparent]</bean>
- [backcolor=transparent]</beans>
[backcolor=transparent]注意:
- 可选配置包括 version、group、lazy、loadbalance、async、return,其他选项为必须。配置项可以任意调换位置。
- 注册中心在 EDAS 中是不生效的,所有 Dubbo 的服务会自动注册到 EDAS 的配置中心,用户无需关心。
- 由于 Dubbo 配置文件消费者可以指定多个分组,而 EDAS 目前只能通过 group 属性配置一个分组,无法指定多个分组。
- 当有业务需要在程序启动过程中加载服务,则需要设置lazy=true,进行延迟加载
注解配置方式
从 EDAS 容器 V3.0 版本开始,已经对 Dubbo 原生注解进行支持了,用户无需进行注解转换 XML 即可使用 EDAS 服务。
[backcolor=transparent]兼容说明:
- 服务发布注解: @Service
- 服务订阅注解: @Reference
[backcolor=transparent]支持属性: group、version、timeout
[backcolor=transparent]使用方式: 在创建容器的时候,选择最新版本容器 V3.0 即可。