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.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值