我们新建两个项目分别模拟服务的提供者和服务的消费者,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. React-native 环境配置及项目创建

    https://reactnative.cn/docs/next/getting-started.html 看到  安装 Android Studio 安装 Android Studio http:/ ...

  2. idea2018.3.6安装与破解教程(亲测可用、破解到2100年)

    最近,帮室友进行idea安装,之前自己安装借鉴的博客已404,在网上找了好几个都无效,想着总结一份备用. 此博客是又找了一台电脑,边安装边写的. 目录 (已安装好的,可以直接看idea2018.3.6 ...

  3. d3.js+svg的树形图

    效果图 数据 { "name":"中国", "children": [ { "name":"浙江" ...

  4. Python argparse 用法总结

    使用argparse的四个基本步骤 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数 # example ...

  5. C++入门经典-例5.10-指针作为返回值

    1:代码如下: // 5.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  6. Maven项目解决Remove '@override' annotation终极方案

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  7. Spark学习(一)——Spark运行架构

    基本概念 在具体讲解Spark运行架构之前,需要先了解几个重要的概念: RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供 ...

  8. Git:本地项目与远程仓库的git/clone

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_40197828/article/details/79283278 初识Git命令行将本地项 ...

  9. shell script operate the date

    How to increment a date in a bash script Use the date command's ability to add days to existing date ...

  10. linux挂载本地镜像

    //创建挂载目录 mkdir /media/cdrom //挂载镜像 mount -t iso9660 /dev/cdrom /media/cdrom 提示:mount:block device /d ...