学习dubbo,看着官方文档写个简单的dubbo
需要安装zookeeper
dubbo控制台可选
服务消费者配置文件 consumer.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="DubboDemo" /> <!-- 注册中心地址 --> <dubbo:registry protocol="zookeeper" address="10.3.1.188:2181" /> <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 --> <dubbo:monitor protocol="registry"/> <!--代理服务 --> <dubbo:reference interface="com.zbb.service.TestDubboService" id="testDuboService" check="false"/> </beans>服务生产者配置文件 provider.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="DubboDemo" /> <!-- 使用zookeeper注册中心,暴露服务地址 --> <dubbo:registry protocol="zookeeper" address="10.3.1.188:2181"/> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20801" /> <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 --> <dubbo:monitor protocol="registry" /> <!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 --> <dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" /> <!-- 和本地bean一样实现服务 声明需要暴露的服务接口--> <dubbo:service retries="0" interface="com.zbb.service.TestDubboService" ref="testDuboService"/> <bean id="testDuboService" class="com.zbb.serviceImpl.TestDuboServiceImpl" /> </beans> 接口 package com.zbb.service; public interface TestDubboService { public String sayHello(); }实现
package com.zbb.serviceImpl; import com.zbb.service.TestDubboService; public class TestDuboServiceImpl implements TestDubboService { public String sayHello () { return "hello"; } }启动 生产者 测试
import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 服务生产者 */ public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/provider.xml"}); context.start(); System.in.read(); // 按任意键退出 } }启动 消费者 测试
import com.zbb.service.TestDubboService; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 服务消费者 */ public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/consumer.xml"}); context.start(); TestDubboService demoService = (TestDubboService)context.getBean("testDuboService"); // 获取远程服务代理 String hello = demoService.sayHello(); // 执行远程方法 System.out.println( hello ); // 显示调用结果 } }