我们新建两个项目分别模拟服务的提供者和服务的消费者,spring boot 集成dubbo主要分为以下几个步骤:

1.安装zookeeper

推荐使用docker 安装,使用以下几个命令即可完成

(1)docker pull zookeeper:3.4.11

(2)docker run --name zookeeper -p 2181:2181 --restart always -d 56d414270ae3 (-d 后面为镜像ID)

2.服务提供者和服务消费者的项目中分别添加dubbo 和zookeeper依赖

       <dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

3.安装dubbo管理后台

在dubbo发布的项目中有个dubbo-admin项目,可以将这个项目打成一个war包,准备一个tomcat ,将wabapps 下的ROOT 文件夹下 内容删除,将dubbo-admin.war解压至ROOT下,修改WEN-INF下的dubbo.properties中 的zookeeper地址改成自己的,为了防止端口冲突可以修改tomcat 下的conf 下的server.xml 中的端口号,然后运行bin 下的startup.bat 即可启动dubbo的管理后台,输入用户名和密码(root/root 或guest/guest)

4.编写服务代码

(1)新建一个接口,表明我们要提供的服务

package com.springboot.service.ticket;

public interface TicketService {
public String getTicket() ;
}

(2)实现服务接口,并使用dubbo的@service标注这个服务,并将服务作为一个组件注入到IOC容器中

package com.springboot.service.ticket;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;

@Service
@Component
public class TicketServiceImpl implements TicketService{ @Override
public String getTicket() {
// TODO Auto-generated method stub
return "《碟中谍6》";
} }

(3)配置服务

#服务名称
dubbo.application.name=springboot-dubbo-provider
#zookeeper地址
dubbo.registry.address=zookeeper://192.168.1.215:2181
#服务的扫描路径,改路径下被@service注解的都将被当成一个服务发布
dubbo.scan.base-packages=com.springboot.service
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

5.编写消费端代码

(1)新建和服务端一模一样的接口,包括接口所在路径也要一致

(2)调用服务。使用@Reference 将服务接口注入

package com.springboot.service.user;

import org.springframework.stereotype.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.springboot.service.ticket.TicketService; @Service
public class UserService { @Reference
TicketService ticketService; public String BuyTicket() {
String ticket = ticketService.getTicket();
System.out.println("买到电影票:"+ticket);
return ticket;
}
}

(3)配置

server.port=8081
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://192.168.1.215:2181

(4)调用消费端服务

package com.springboot.contrller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import com.springboot.service.user.UserService; @RestController
public class buyController { @Autowired
UserService userService; @GetMapping("/buy")
public String buy() {
return userService.BuyTicket();
}
}

6.发布服务,订阅服务。

分别启动服务端项目和消费端项目,即可在dubbo的管理后台看到服务提供者和消费者

调用消费端服务

最新文章

  1. ThreadLocal类详解:原理、源码、用法
  2. Oracle基本数据类型
  3. Android-----工程文件目录介绍
  4. Another app is currently holding the yum lock; waiting for it to exit...
  5. php中重写和final关键字的使用
  6. &quot;rel=nofollow&quot;属性简介
  7. 简单计算器--hdu1237(栈的运用)
  8. Oracle GoldenGate 11.2 OGG-01168(转)
  9. A Dream
  10. Linux 命令备注
  11. DEDE数据库修改
  12. CentOS在安装配置 Ngnix_tomcat_PHP_Mysql
  13. Delphi中paramstr的用法
  14. 代码生成利器:IDEA 强大的 Live Templates(转)
  15. 网站开启cdn加速的最简单步骤
  16. R语言使用 multicore 包进行并行计算
  17. jQuery如何制作动画
  18. js 图片瀑布流效果实现
  19. 使用linux命令行调整非图形界面分辨率
  20. Codeforces Beta Round #55 (Div. 2)

热门文章

  1. Python 操作 MySQL 数据库Ⅳ
  2. 用CSS创建分页的实例
  3. C# 写日志的方法
  4. Javascript兼容各浏览器的日期转换
  5. cp:复制文件和目录
  6. ovs-vsctl patch 连接两个网桥
  7. 将JDBC查询出的数据转化为json格式返回
  8. Confluence备份,数据迁移
  9. 基于ElementUI,设置流体高度时,固定列与底部有间隙
  10. [Java]分解算术表达式一