赞
踩
Dubbo作为一个相当优秀的微服框架,它拥有着不同角度的开发模式,支持注解也支持xml开发,那在这里,讲一下xml的配置文件标签使用方式
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframeworkorg/schema/beans"
- xmins:xsi="http://www.w3.org/2001/xmlschema-instance"
- xmlns:dubbo="http://dubbo.apacheorg/schema/dubbo"
- xsi:schemalocation="http://www.springframeworkorg/schema/beans
- http://www.springframeworkorg/schema/beans/spring-beans-4.3.xsd
- http://dubbo.apacheorg/schema/dubbo
- http://dubbo.apacheorg/schema/dubbo/dubbo.xsd">
- <!--用来描述提供方应用信息,比如应用名称,维护人,版本等
- 其中应用名称是必填的,开发这或运维人员可以通过监控平台查看
- 这些信息,能够快速的定位和解决问题
- -->
- <dubbo:application name="user-service"/>
-
- <!--服务注册中心的地址,N/A表示不注册-->
- <dubbo:registry address="N/A"/>
-
- <!--用 Dubbo协议在28880端口暴露服务-->
- <dubbo:protocol name="dubbo" port="20880"/>
-
- <!--声明需要暴露的服务接口-->
- <dubbo:service interface="com.cb.dubbo.IUserService" ref="userService"/>
-
- <!--和本也Bean样实现服务-->
- <bean id="userService" class="com.cb.dubbo.UserServiceImpl"/>
-
- </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
让上面的生产者信息生效,启动的时候观察日志即可:
两种启动方式
public class DubboMain{ public static void main(String[] args) throws IOException{ //第1种方式 ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath*:/META-INF/user-provider.xml"); context.start(); //阻塞Main线程 System.in.read(); //第二种方式 //Main.main(args); } }观察日志只要打印了Dubbo发布的地址,说明注册成功了
定义一个消费者consumer.xml文件,其中配置信息如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframeworkorg/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
- xmlns:dubbo="http://dubbo.apacheorg/schema/dubbo"
- xsi:schemalocation="http://www.springframework.org/schema/beans
- http://www.springframeworkorg/schema/beans/spring-beans-4.3.xsd
- http://dubbo.apacheorg/schema/dubbo
- http://dubbo.apacheorg/schema/dubbo/dubbo.xsd">
- <!--提供方应用信息,用于计算依赖关系-->
- <dubbo:application name="order-service"/>
-
- <dubbo:registry address="N/A"/>
-
- <!--生成远程服务代理,可以和本地Bean一样使用userservice-->
- <dubbo reference id=“userService" interface="com.cb.dubbo.IUserservice"
- url="dubbo://192.168.13.1:20880/com.cb.dubbo.IUserService" />
-
- </beans>
启动调用userService:
public static void main(String[] args){ ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext ("classpath*:META-INF/spring/consumer.xml"); IUserService iUserService=(IUserService)context.getBean("userService"); System.out.println(iUserService.getNameById(1001)); }只要按照真实数据返回即可证明调用完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。