美文网首页
dubbo学习--第一个dubbo示例

dubbo学习--第一个dubbo示例

作者: ted005 | 来源:发表于2018-12-18 13:00 被阅读13次

    第一个例子使用dubbo-demo工程,里面包含3个子项目:api, provider, consumer

    image.png
    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类。
    • 使用demoServiceBean, 可以直接调用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

    相关文章

      网友评论

          本文标题:dubbo学习--第一个dubbo示例

          本文链接:https://www.haomeiwen.com/subject/blokkqtx.html