第一个例子使用dubbo-demo
工程,里面包含3个子项目:api
, provider
, consumer
api
定义一个简单的接口DemoService
,用来描述服务,它的具体实现由provider
来提供。
public interface DemoService {
String sayHello(String name);
}
provider
配置文件dubbo-demo-provider.xml
中使用dubbo命名空间定义的相关标签。
dubbo扩展了Spring XML Schema,有自己的XSD文件,其中定义了许多XML标签,用来在Spring容器中使用dubbo的功能。
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd"
provider的配置:
<!-- provider's application name, used for tracing dependency relationship -->
<dubbo:application name="demo-provider"/>
<!-- 使用广播注册中心,广播自己的服务地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234"/>
<!-- use dubbo protocol to export service on port 20880 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 实际的服务实现 -->
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<!-- 暴露服务接口 -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
- dubbo命名空间中定义了大量标签,可查看XSD文件。
- 这里使用
multicast
广播注册中心,provider广播自己的地址。 -
demoService
是普通的Java Bean。 -
service
标签暴露提供的服务。对应ServiceConfig
类。
consumer
对应的配置文件dubbo-demo-consumer.xml
<!-- 不要和provider的名称相同 -->
<dubbo:application name="demo-consumer"/>
<!-- 使用广播注册中心来发现服务 -->
<dubbo:registry address="multicast://224.5.6.7:1234"/>
<!-- generate proxy for the remote service, then demoService can be used in the same way as the
local regular interface -->
<dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService"/>
- consumer的名称不要和provider的名称相同
- 同样使用
multicast
广播来订阅服务 -
reference
标签表示consumer引用服务。对应ReferenceConfig
类。 - 使用
demoService
Bean, 可以直接调用DemoService
接口定义的服务,如下:
DemoService demoService = (DemoService) context.getBean("demoService");
try {
String hello = demoService.sayHello("world");
System.out.println(hello);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
使用注解方式搭建dubbo的例子
以上是使用XML文件的方式配置dubbo,下面的完整代码完全使用注解来实现:
使用注解配置dubbo
网友评论