dubbo源码 学习笔记(二)
2017-10-25 14:48
387 查看
dubbo源码中提供一个demo
其中包含3个项目:
api provider consumer
api中定义了一个接口 供其他两个引用
在provider中提供了上面接口的一个实现
定义了一个启动类
在consumer中有一个启动类
这个demo采用multicase注册中心 大部分项目中我们会采用zookeeper 关于注册中心的后面会讲到
其中包含3个项目:
api provider consumer
api中定义了一个接口 供其他两个引用
public interface DemoService { String sayHello(String name); }
在provider中提供了上面接口的一个实现
public class DemoServiceImpl implements DemoService { public String sayHello(String name) { System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress()); return "Hello " + name + ", response form provider: " + RpcContext.getContext().getLocalAddress(); } }
定义了一个启动类
public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/dubbo-demo-provider.xml"}); context.start(); System.in.read(); // 按任意键退出 }
dubbo-demo-provider.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="demo-provider"/> <!-- 使用multicast广播注册中心暴露服务地址 --> <dubbo:registry address="multicast://224.5.6.7:1234"/> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880"/> <!-- 和本地bean一样实现服务 --> <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService"/> </beans>
在consumer中有一个启动类
public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/dubbo-demo-consumer.xml"}); context.start(); DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理 String hello = demoService.sayHello("world"); // 执行远程方法 System.out.println(hello); // 显示调用结果 }
dubbo-demo-consumer.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="demo-consumer"/> <!-- 使用multicast广播注册中心暴露发现服务地址 --> <dubbo:registry address="multicast://224.5.6.7:1234"/> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="demoService" check="false" interface="com.alibaba.dubbo.demo.DemoService"/> </beans>
这个demo采用multicase注册中心 大部分项目中我们会采用zookeeper 关于注册中心的后面会讲到
相关文章推荐
- dubbo源码 学习笔记(四)
- dubbo源码学习笔记----RPC
- dubbo 源码学习笔记 (三) —— dubbo引用服务的过程
- dubbo 源码学习笔记 (六) —— 集群模块
- dubbo源码 学习笔记(六)
- dubbo源码学习笔记----结合Spring
- dubbo 源码学习笔记 (八) —— 远程通讯模块
- dubbo源码学习笔记----Provider和Consumer
- dubbo 源码学习笔记 (二) —— dubbo发布服务的过程
- dubbo 源码学习笔记 (一) —— ExtensionLoader和URL
- Dubbo 源码学习笔记 —— SPI的机制体现
- dubbo学习笔记 一 源码编译
- dubbo源码学习笔记----container
- dubbo源码 学习笔记(五)
- dubbo 源码学习笔记 (五) —— 注册中心模块
- dubbo 源码学习笔记 (四) —— 配置模块
- CAFFE源码学习笔记之五-internal_thread
- quartz2源码分析(1)--学习笔记
- PostgreSQL学习笔记---1 源码编译安装PostgreSQL
- 转载:Pixhawk源码笔记四:学习RC Input and Output