学习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 ); // 显示调用结果
}
}