dubbo之整合SpringBoot

这篇具有很好参考价值的文章主要介绍了dubbo之整合SpringBoot。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

zookeeper安装

1.拉取ZooKeeper镜像

2.新建文件夹

3.挂载本地文件夹并启动服务

4.查看容器

5.进入容器(zookeeper)

Dubbo Admin安装

1.下载dubbo-admin

 2.zip包解压

 3.修改配置文件

 4.打包项目

 5.启动jar

6.访问

 构建项目

api模块

1.创建实体类

2.创建测试接口

生产者模块

1.导入依赖

2.添加配置

3.编写启动类

4.添加mapper接口

5.实现接口

6.编写controller接口

7.调用接口

消费者模块

1.导入依赖

2.添加配置

3.编写启动类

4.调用生产者接口

5.调用接口


zookeeper安装

在docker下安装zookeeper

1.拉取ZooKeeper镜像

# 查看本地镜像
docker images
# 拉取ZooKeeper镜像最新版本
docker pull zookeeper:latest

2.新建文件夹

mkdir zookeeper

3.挂载本地文件夹并启动服务

docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v /root/docker/zookeeper:/data --name zookeeper --restart always zookeeper

-d :表示在一直在后台运行容器
-e TZ="Asia/Shanghai" :指定上海时区
-p 2181:2181 :对端口进行映射,将本地2181端口映射到容器内部的2181端口
-v :将本地目录(文件)挂载到容器指定目录;
--name :设置创建的容器名称
--restart always :始终重新启动zookeeper

4.查看容器

docker ps

5.进入容器(zookeeper)

docker exec -it zookeeper bash      //只登录容器,不登录 zkCli
./bin/zkCli.sh    //执行脚本新建一个Client,即进入容器

Dubbo Admin安装

1.下载dubbo-admin

进入github,搜索dubbo-admin:https://github.com/apache/dubbo-admin

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

 2.zip包解压

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

 3.修改配置文件

D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-server\src\main\resources目录下,修改application.properties 配置文件

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

找到下面配置的注册中心的地址,修改为zookeeper注册中心的IP和端口,也可以自定义访问端口号

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

 4.打包项目

进入到D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-distribution目录下,按住shift+右键,打开power shell,执行清除并打包命令

mvn clean package -Dmaven.test.skip=true

都success后就成功了

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

 5.启动jar

在目录D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-distribution\target下,执行下面的命令启动dubbo-admin

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

java -jar .\dubbo-admin-0.5.0-SNAPSHOT.jar

6.访问

浏览器输入:43.139.136.235:6097,用户名密码都是root

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

 构建项目

api模块

项目结构:

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

1.创建实体类

@Data
public class User implements Serializable {
    private Long id;
    private String username;
    private String password;
}

注意:实体来要添加Serializable,否则会序列化报错

2.创建测试接口

public interface UserService {
    User selectUserById(Long id);
}

生产者模块

创建springboot项目:dubbo-develop-provider

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

1.导入依赖

    <dependencies>
        <dependency>
            <groupId>com.lgcgk</groupId>
            <artifactId>dubbo-develop-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--dubbo 与 spring-boot 整合包-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        
        <!--springboot 启动核心包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--springboot rest -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!---dubbo 与 zookeeper整合包 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-zookeeper</artifactId>
        </dependency>

        <!--mysql相关的驱动-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <!--   描述存放资源的目录,该路径相对POM路径-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

2.添加配置

server:
  port: 6050

spring:
  application:
    name: dubbo-samples-privider
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dubbo-sql?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456
mybatis-plus:
  type-aliases-package: com.lgcgk.provider.entity
  mapper-locations: com/lgcgk/provider/mapper/*.xml

dubbo:
  application:
    name: ${spring.application.name}
  registry:
    address: zookeeper://127.0.0.1:2181
    timeout: 200000
  protocol:
    name: dubbo
    port: 20890
  scan:
    base-packages: com.lgcgk.provider.service.impl

dubbo配置:服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心

dubbo.protocol.name:dubbo服务名称

dubbo.protocol.port:dubbo服务端口

dubbo.registry.timeout:请求zookeeper超时时间

3.编写启动类

@EnableDubbo
@SpringBootApplication
@MapperScan("com.demo.provider.mapper")
public class ProviderApp {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class,args);
        System.out.println("生产者启动完毕");
    }
}

dubbo必须配置注解@EnableDubbo

@EnableDubbo:整合了三个注解@EnableDubboConfig、@DubboComponentScan、@EnableDubboLifecycle

        1.@EnableDubboConfig:将用于解析配置相关的类注册到spring容器

        2.@DubboComponentScan:用于指定@Service扫描路径

        3.@EnableDubboLifecycle:注册了两个监听器到spring容器

4.添加mapper接口

public interface UserMapper {
    User selectUserById(Long id);
}

xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.lgcgk.provider.mapper.UserMapper">

    <select id="selectUserById" resultType="com.lgcgk.api.entity.User">
        select * from user where id = #{id}
    </select>
</mapper>

5.实现接口

@DubboService
@AllArgsConstructor
public class UserServiceImpl implements UserService {

    UserMapper userMapper;

    public User selectUserById(Long id) {
        User user = userMapper.selectUserById(id);
        return user;
    }
}

1.@DubboService

在类上加入@DubboService注解,表示该Bean以ServiceBean形式注册到Spring容器中,以便后续创建Dubbo Service

2.@AllArgsConstructor

是lombok中的注解,作用在类上;使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数;@Autowired和@resource可以用它来代替

6.编写controller接口

@RestController
@RequestMapping("/provider")
@AllArgsConstructor
public class UserController {
    UserService userService;

    @GetMapping("/selectUserById/{id}")
    public User selectUserById(@PathVariable("id")Long id){
        return userService.selectUserById(id);
    }

}

7.调用接口

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端文章来源地址https://www.toymoban.com/news/detail-635319.html

 

消费者模块

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

1.导入依赖

    <dependencies>
        <!--dubbo-samples-springcloud-api 项目 依赖-->
        <dependency>
            <groupId>com.lgcgk</groupId>
            <artifactId>dubbo-develop-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-zookeeper</artifactId>
        </dependency>
    </dependencies>

2.添加配置

server:
  port: 6051
spring:
  application:
    name: dubbo-samples-consumer

dubbo:
  application:
    name: ${spring.application.name}
  registry:
    address: zookeeper://127.0.0.1:2181
    timeout: 200000
  protocol:
    name: dubbo-consumer

3.编写启动类

@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }
}

4.调用生产者接口

@RestController
@RequestMapping("/consumer")
@Slf4j
public class ConsumerUserController {
    @DubboReference( protocol = "dubbo", loadbalance = "random")
    UserService userService;

    @RequestMapping("/selectUserById/{id}")
    public User getUser(@PathVariable("id") Long id) {
        User user = userService.selectUserById(id);
        log.info("response from provider: {}", user);
        return user;
    }

}

@DubboReference:表名该类为Dubbo Reference,在需要调用的服务接口上使用即可直接调用远程服务。

protocol:调用的服务名

loadbalance:dubbo提供了4种负载均衡策略

        1.random:基于权重随机算法

        2.roundrobin:基于加权轮询算法

        3.leastactive:基于最少活跃调用数算法

        4.consistenthash:基于 hash 一致性

5.调用接口

dubbo之整合SpringBoot,Java,spring boot,spring,dubbo,spring boot,后端

到了这里,关于dubbo之整合SpringBoot的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot】SpringBoot 优雅整合Swagger Api 自动生成文档

    Swagger 是一套 RESTful API 文档生成工具,可以方便地生成 API 文档并提供 API 调试页面。 而 Spring Boot 是一款非常优秀的 Java Web 开发框架,它可以非常方便地构建 Web 应用程序。 在本文中,我们将介绍如何使用 Swagger 以及如何在 Spring Boot 中整合 Swagger 。 首先,在 pom.xml 文件中添

    2023年04月22日
    浏览(34)
  • SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月12日
    浏览(56)
  • SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月11日
    浏览(50)
  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(38)
  • “从零开始学习Spring Boot:快速搭建Java后端开发环境“

    标题:从零开始学习Spring Boot:快速搭建Java后端开发环境 摘要:本文将介绍如何从零开始学习Spring Boot,并详细讲解如何快速搭建Java后端开发环境。通过本文的指导,您将能够快速搭建一个基于Spring Boot的Java后端开发环境并开始编写代码。 正文: 一、准备工作 在开始之前,

    2024年02月15日
    浏览(42)
  • dubbo之整合SpringBoot

    目录 zookeeper安装 1.拉取ZooKeeper镜像 2.新建文件夹 3.挂载本地文件夹并启动服务 4.查看容器 5.进入容器(zookeeper) Dubbo Admin安装 1.下载dubbo-admin  2.zip包解压  3.修改配置文件  4.打包项目  5.启动jar 6.访问  构建项目 api模块 1.创建实体类 2.创建测试接口 生产者模块 1.导入依赖

    2024年02月13日
    浏览(21)
  • SpringBoot整合Dubbo+Zookeeper

    Dubbo概述 学习Dubbo前你要了解这些 安装zk Zookeeper概述与安装 Dubbo在zk中的存储结构 Dubbo的注册中心有哪些 1、 Multicast :Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。 2、 Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推

    2024年02月04日
    浏览(30)
  • 【SpringBoot整合Dubbo和Zookeeper】

    本笔记内容为狂神说SpringBoot集成Dubbo和Zookeeper部分 目录 一、Dubbo dubbo基本概念 调用关系说明 二、Dubbo环境搭建  三、Window下安装zookeeper 1、下载zookeeper  2、运行 3、测试 四、window下安装dubbo-admin 1、下载dubbo-admin 2、解压进入目录 3、在项目目录下打包dubbo-admin 4、执行 五、S

    2024年02月08日
    浏览(27)
  • Java:SpringBoot整合SSE(Server-Sent Events)实现后端主动向前端推送数据

    SpringBoot整合SSE(Server-Sent Events)可以实现后端主动向前端推送数据 依赖 后端接收sse连接 前端浏览器代码 项目目录 完整依赖 pom.xml 前端代码 index.html 定义一个返回数据 Message.java 定义sse接口 SseService.java 实现sse接口 SseServiceImpl.java 定时任务 SendMessageTask.java 前端路由 IndexCont

    2024年02月10日
    浏览(33)
  • Spring Boot Dubbo Zookeeper

    Common 公共依赖 定义接口(用户服务注册使用) Provider 首先需要依赖Common yml 实现定义的接口(Service是apache.dubbo) 启动类(@EnableDubbo) Consumer 首先需要依赖Common Controller(@Reference注解) 安装脚本

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包