我们新建两个项目分别模拟服务的提供者和服务的消费者,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的管理后台看到服务提供者和消费者

调用消费端服务

spring boot-18.使用dubbo发布分布式服务的更多相关文章

  1. Spring Boot Dubbo 构建分布式服务

    概述: 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数 ...

  2. 使用Ratpack和Spring Boot打造高性能的JVM微服务应用

    使用Ratpack和Spring Boot打造高性能的JVM微服务应用 这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices wit ...

  3. 基于Nginx和Zookeeper实现Dubbo的分布式服务

    一.前言 公司的项目基于阿里的Dubbo 微服务框架开发.为了符合相关监管部门的安全要求,公司购买了华东1.华东2两套异地服务器,一套是业务服务器,一套是灾备服务器.准备在这两套服务器上实现 Dubb ...

  4. Spring Boot 集成servlet,发布为可直接运行的war包,方便后续打包为docker镜像。

    背景:Spring Boot 集成servlet,发布为可直接运行的war包,方便后续打包为docker镜像. 原文地址 https://github.com/weibaohui/springboot ...

  5. dubbo发布webservice服务

    dubbo发布webservice服务 学习了:https://blog.csdn.net/zhangyunpengchang/article/details/51567127 https://blo ...

  6. Spring Boot同时开启HTTP和HTTPS服务

    由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务. Spring Boot的application.yml中添加如下配 ...

  7. dubbo 发布 RPC 服务

    Dubbo 发布 RPC 服务 建立服务提供者项目 pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  8. Spring Boot 2.X(十三):邮件服务

    前言 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式. 准备 一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞 ...

  9. Spring Boot 2.2.2 发布,新增 2 个新特性!

    Spring Boot 2.2.2 发布咯! Spring Boot 2.2.1 发布,一个有点坑的版本! 2.2.1 发布没过一个月,2.2.2 就来了. Maven依赖给大家奉上: <dep ...

随机推荐

  1. python 的pip安装

    C:\Python27>C:\Python27\Scripts\pip.exe install gevent gevent是安装的模块名

  2. 日志管理-rsyslog日志服务器及loganalyzer

    一,日志基础 日志:记录时间,地点,任务,事件 格式:日期时间 主机 进程[pid]: 事件内容 rsyslog 特性: 多线程,UDP, TCP, SSL, TLS, RELP,MySQL, PGS ...

  3. redis 短信验证码

    127.0.0.1:6379> get CERTIYCODESENDFORAPP.1101:18222202889 "\xac\xed\x00\x05sr\x00\x11java.ut ...

  4. eclipse切换 package explorer

  5. luoguP1636 Einstein学画画 x

    P1636 Einstein学画画 题目描述 Einstein学起了画画, 此人比较懒--,他希望用最少的笔画画出一张画... 给定一个无向图,包含n 个顶点(编号1~n),m 条边,求最少用多少笔可 ...

  6. codevs 5969 [AK]刻录光盘x

                         题目描述 Description • 在FJOI2010夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学 ...

  7. HDU2433—Travel (BFS,最短路)

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. 解析XML的几种方式:DOM、SAX、PULL

    DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构. 优点: 整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能. 通过树形结构存 ...

  9. 【学习】SpringBoot之自定义拦截器

    /** * 自定义拦截器 **/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapte ...

  10. CEF3编译

    要使用CEF3首先就要编译 下载网址为http://opensource.spotify.com/cefbuilds/index.html#windows64_builds 如果下载不动 可以用我上传 ...