springboot集成dubbo
本例场景:
springboot集成dubbo,使用zookeeper作为注册中心
本例子demo源码: https://github.com/zhangbeizhen/springboot-dubbo
1.本例分为3部分:
1>.服务提供方provider
2>.服务消费方consumer
3>.注册中心zookeeper
2.服务提供方provider
1>.主要任务服务提供者注册到注册中心
<1>.引入dubbo和zkclient相关依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper的客户端工具-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<2>.在application.properties配置dubbo的扫描包和注册中心地址
dubbo.application.name=provider
#注册服务
dubbo.registry.address=zookeeper://172.16.4.156:2181
#发布服务
dubbo.scan.base-packages=com.zbz.service
<3>.使用@Service发布服务
a>.定义发布服务的的接口
public interface EmployeeService {
public String getEmpInfo();
}
b>.发布服务
@Component
@Service /**注意此注解:com.alibaba.dubbo.config.annotation.Service*/
public class EmployeeServiceImpl implements EmployeeService{
@Override
public String getEmpInfo() {
String info = "这是一个非常棒的同事.";
return info;
}
}
3.服务消费方consumer
<1>.引入dubbo和zkclient相关依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper的客户端工具-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<2>.application.properties配置dubbo的扫描包和注册中心地址
dubbo.application.name=consumer
#注册服务
dubbo.registry.address=zookeeper://172.16.4.156:2181
server.port=8081
<3>.引用服务
a>.定义引用服务的接口
此接口全路径名需要和发布服务方接口全路径相同
public interface EmployeeService {
public String getEmpInfo();
}
b>.使用@Reference注解引用服务
c>.具体服务类
@Service
public class ManageService {
@Reference /**com.alibaba.dubbo.config.annotation.Reference*/
EmployeeService employeeService;
public String getEmpInfo(){
String info = employeeService.getEmpInfo();
return info;
}
}
<4>.ManageController类
@RestController
public class ManageController {
@Autowired
ManageService manageService;
@GetMapping("/emp")
public String getInfo(){
String info = "";
try{
info = manageService.getEmpInfo();
}catch (Exception e){
e.printStackTrace();
}
String rtnString ="{\"info\":\" "+ info +"\"}";
return rtnString;
}
}
4.在linux上使用docker安装zookeeper
1>.查看镜像
docker images
2>.下载镜像
docker pull zookeeper:3.4.14
3>.启动docker
docker run --name zk01 -p 2181:2181 --restart always -d 镜像id
docker run --name zk01 -p 2181:2181 --restart always -d 2a7f6fc5c8a1
端口:暴露3个端口 2181 2888 3888
(the zookeeper client port, follower port, election port respectively)
5.测试
Postman截图:
6.注意
1>.springboot,dubbo,zookeeper版本需要匹配
2>.服务提供方和服务消费方服务接口要相同而且都是interface类型
服务提供方接口: com.zbz.service.EmployeeService
服务消费方接口: com.zbz.service.EmployeeService
以上,TKS.