当前位置:   article > 正文

通过Dubbo注解实现RPC调用_dubbo rpc接口对外开放

dubbo rpc接口对外开放

启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似。

1、采用XML配置如下: 

提供方:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://code.alibabatech.com/schema/dubbo
  8. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  9. <!-- 提供方应用信息,用于计算依赖关系 -->
  10. <dubbo:application name="mall-seller-provider" />
  11. <!-- 使用multicast广播注册中心暴露服务地址 -->
  12. <!-- <dubbo:registry address="multicast://xx.xx.xx.xx:1234" /> -->
  13. <!-- 使用zookeeper注册中心暴露服务地址 -->
  14. <dubbo:registry address="zookeeper://xx.xx.xx.xx:2181" />
  15. <!-- 用dubbo协议在20880端口暴露服务 -->
  16. <dubbo:protocol name="dubbo" port="20880" />
  17. <!-- 声明需要暴露的服务接口(注意是接口,不是实现类) -->
  18. <dubbo:service interface="cn.itcats.mall.seller.service" ref="sellerService" />
  19. <!--注入实现类,id和上面的暴露的服务接口ref要一致,dubbo就是通过这个来注册对应的服务 -->
  20. <bean id="sellerService" class="cn.itcats.mall.seller.service.impl.GoodsServiceImpl"></bean>
  21. </beans>

 

消费方调用方式配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://code.alibabatech.com/schema/dubbo
  8. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  9. <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
  10. <dubbo:application name="mall-seller-consumer"/>
  11. <!-- 使用multicast广播注册中心暴露发现服务地址 -->
  12. <!-- <dubbo:registry address="multicast://xx.xx.xx.xx:1234" /> -->
  13. <dubbo:registry address="zookeeper://xx.xx.xx.xx:2181" />
  14. <!-- 生成远程服务代理,可以和本地bean一样调用 -->
  15. <dubbo:reference id="sellerService" interface="cn.itcats.mall.seller.service" />
  16. </beans>

 

总结:

<dubbo:service interface="cn.itcats.mall.seller.service" ref="sellerService" />把接口暴露出去,再ref引用接口实现类,在程序启动的时候会自动注册到zookeeper


<dubbo:reference id="sellerService" interface="cn.itcats.mall.seller.service" />   消费方引用远端提供的sevice接口

 

2、通过注解配置dubbo

提供方:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
  11. <!--一般为maven工程名 -->
  12. <dubbo:application name="mall-seller-service"/>
  13. <dubbo:registry address="zookeeper://10.37.xx.xx:2181"/>
  14. <!-- 书写提供方的实现类包名 -->
  15. <dubbo:annotation package="cn.itcats.seller.service.impl" />
  16. </beans>

 

消费方:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <!-- 引用dubbo 服务 -->
  11. <!--一般为maven工程名 -->
  12. <dubbo:application name="pinyougou-shop-web" />
  13. <dubbo:registry address="zookeeper://10.37.129.3:2181"/>
  14. <!-- 书写消费方的包名 -->
  15. <dubbo:annotation package="com.pinyougou.shop.controller" />

 

Class类 xxxServiceImpl上引入的注解为com.alibaba.dubbo.config.annotation的Service,而不是springframework包中的service,这样Service服务就被注册到dubbo中了

 

总结:

使用注解方式在xml配置方面好像没有什么区别。
但是在Class类上 xxxController中依然引入springframework中的 @Controller注解,但是在引用某service服务时候,不使用spring framwork提供的@Autowired或@Resource注解,
而采用
com.alibaba.dubbo.xxx中的@Reference注入Service。
通过@Reference注解,dubbo会在扫描的时候会自动帮我们代理接口,然后通过rpc调用远程服务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/424556
推荐阅读
相关标签
  

闽ICP备14008679号