当前位置:   article > 正文

Dubbo系列之xml标签说明_dubbo:reference

dubbo:reference

Dubbo作为一个相当优秀的微服框架,它拥有着不同角度的开发模式,支持注解也支持xml开发,那在这里,讲一下xml的配置文件标签使用方式

我们创建一个用户User的生产者工程,定义一个名为user-provider.xml的文件,文件内容如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframeworkorg/schema/beans"
  3. xmins:xsi="http://www.w3.org/2001/xmlschema-instance"
  4. xmlns:dubbo="http://dubbo.apacheorg/schema/dubbo"
  5. xsi:schemalocation="http://www.springframeworkorg/schema/beans
  6. http://www.springframeworkorg/schema/beans/spring-beans-4.3.xsd
  7. http://dubbo.apacheorg/schema/dubbo
  8. http://dubbo.apacheorg/schema/dubbo/dubbo.xsd">
  9. <!--用来描述提供方应用信息,比如应用名称,维护人,版本等
  10. 其中应用名称是必填的,开发这或运维人员可以通过监控平台查看
  11. 这些信息,能够快速的定位和解决问题
  12. -->
  13. <dubbo:application name="user-service"/>
  14. <!--服务注册中心的地址,N/A表示不注册-->
  15. <dubbo:registry address="N/A"/>
  16. <!--用 Dubbo协议在28880端口暴露服务-->
  17. <dubbo:protocol name="dubbo" port="20880"/>
  18. <!--声明需要暴露的服务接口-->
  19. <dubbo:service interface="com.cb.dubbo.IUserService" ref="userService"/>
  20. <!--和本也Bean样实现服务-->
  21. <bean id="userService" class="com.cb.dubbo.UserServiceImpl"/>
  22. </beans>

1、dubbo:application

对应的是org.apache.dubbo.config.ApplicationConfig表示当前应用的信息

①name:当期那应用的名称,可以在dubbo-admin中查看到这个名称,我们在真正实现远程调用时也是用的这个名称

②owner:当前应用程序的负责人,也可以在dubbo-admin上查看到

③qosEnable:是否启动QoS,默认是启动

④qosPort:启动Qos端口,默认是22222

⑤qosAcceptForeignIp:是否允许远程访问,默认是false,不允许

2、dubbo:registry

对应的是org.apache.dubbo.config.RegistryConfig,表示该模块所使用的注册中心,一个模块中的服务可以将其注册到多个注册中心上

①id:当前服务中provider或者consumer中存在多个注册中心是,就需要添加该配置

②address:当前注册中心的访问地址

③protocol:当前注册中心所使用的的协议,如果是zk的话,就写zookeeper://ip:2181

④timeout:当与注册中心不再同一个机房的时候,这个参数会延长,来缓解超时问题

2、dubbo:service

对应的是org.apache.dubbo.config.ServiceConfig,用于指定当前需要对外暴露的服务信息,和dubbo:refrence大致用法相同

①interface:指定当前需要进行对外暴露的接口是哪

②ref:具体实现对象的引用,相当于springboot中的@Autowired

③version:对外暴露的版本号

3、dubbo:protocol

对应的是org.apache.dubbo.config.ProtocolConfig,指定服务在进行数据传输所使用的协议

①id:用什么协议就写什么即可

②name:指定协议名称,默认是dubbo

③port:对外暴露的端口

4、dubbo:reference

对应的是org.apache.dubbo.config.ReferenceConfig,消费者的配置

①id:指定该bean在注册到Spring的id

②interface:服务接口名

③version:指定当前服务版本,与服务提供者的版本保持一致

④registry:指定所具体使用的注册中心

5、dubbo:method

对应的是org.apache.dubbo.config.MethodConfig,是对dubbo:service或者dubbo:reference中的方法实现一个更具体的实现

①name:指定方法名称,用于对这个方法名称的RPC调用进行特殊配置

②async:是否异步,默认是false

让上面的生产者信息生效,启动的时候观察日志即可:

两种启动方式

  1. public class DubboMain{
  2. public static void main(String[] args) throws IOException{
  3. //第1种方式
  4. ClassPathXmlApplicationContext context=new
  5. ClassPathXmlApplicationContext("classpath*:/META-INF/user-provider.xml");
  6. context.start();
  7. //阻塞Main线程
  8. System.in.read();
  9. //第二种方式
  10. //Main.main(args);
  11. }
  12. }

观察日志只要打印了Dubbo发布的地址,说明注册成功了


 定义一个消费者consumer.xml文件,其中配置信息如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframeworkorg/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
  4. xmlns:dubbo="http://dubbo.apacheorg/schema/dubbo"
  5. xsi:schemalocation="http://www.springframework.org/schema/beans
  6. http://www.springframeworkorg/schema/beans/spring-beans-4.3.xsd
  7. http://dubbo.apacheorg/schema/dubbo
  8. http://dubbo.apacheorg/schema/dubbo/dubbo.xsd">
  9. <!--提供方应用信息,用于计算依赖关系-->
  10. <dubbo:application name="order-service"/>
  11. <dubbo:registry address="N/A"/>
  12. <!--生成远程服务代理,可以和本地Bean一样使用userservice-->
  13. <dubbo reference id=“userService" interface="com.cb.dubbo.IUserservice"
  14. url="dubbo://192.168.13.1:20880/com.cb.dubbo.IUserService" />
  15. </beans>

启动调用userService:

  1. public static void main(String[] args){
  2. ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext
  3. ("classpath*:META-INF/spring/consumer.xml");
  4. IUserService iUserService=(IUserService)context.getBean("userService");
  5. System.out.println(iUserService.getNameById(1001));
  6. }

只要按照真实数据返回即可证明调用完成

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

闽ICP备14008679号