一、建3个空工程:
1、建maven工程demo-dubbo-api . 这个是接口工程;
2、建spring boot 的jar 工程 demo-dubbo-provider. 这个是dubbo服务工程;
3、建spring boot 的jar 工程 demo-dubbo-client. 这个是调用dubbo服务的测试工程;
二、
1、在接口工程建:
public interface SayHelloI {
public String say(String name);
}
2、在服务工程:
a、配置pom.xml,添加如下
<!-- dubbo 引用 -->
<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
<version>2.5.8</version>
</dependency>
<!--注册中心引用-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.11</version>
</dependency>
<!--注册中心操作客户端,可以去掉-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
b、新建文件dubbo-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="${dubbo.application.name}" />
<!-- 注册中心暴露服务地址 -->
<dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />
<!-- 暴露服务 -->
<dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />
<dubbo:service interface="com.zivy009.demo3.service.SayHelloI"
ref="sayHelloImp" retries="0" timeout="6000" />
</beans>
c、建文件dubbo.properties
#应用名称
dubbo.application.name=example-provider
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=ip:port,ip:port
#暴露服务方式
dubbo.protocol.name=dubbo
#暴露服务端口
dubbo.protocol.port=20880
d、建配置文件
/**
* @author zivy
* @date 2017年12月19日
* @describe
*/
@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({"classpath:dubbo/*.xml"})
public class DubboConfig {
}
e、 实现接口
/**
* @author zivy
* @date 2017年12月19日
* @describe
*/
@org.springframework.stereotype.Service
public class SayHelloImp implements SayHelloI {
@Override
public String say(String name) {
System.out.println(name+" say hello . "+ new Date());
return "ok";
}
}
3、在测试端
a、pom.xml 和服务端一样;
b、配置 文件,建dubbo-consume.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="${dubbo.application.name}" />
<!-- 注册中心暴露服务地址 -->
<dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />
<dubbo:reference id="sayHelloI" interface="com.zivy009.demo3.service.SayHelloI" />
</beans>
配置文件dubbo.properties
#应用名称
dubbo.application.name=example-consume
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=ip:port
springboot 的入口:
public static void main(String[] args) {
ConfigurableApplicationContext configurableApplicationContext= SpringApplication.run(DemoDubboClientApplication.class, args);
SayHelloI sayHelloI= (SayHelloI)configurableApplicationContext.getBean("sayHelloI");
}