springboot集成dubbo实例

springBoot集成dubbo UserAddress address1 = new UserAddress(1, “北京市昌平区”, “1”, “李老师”, “010-56253825”, “Y”);UserAddress address2 = new UserAddress(2, “深圳市宝安区”, “1”, “王老师”, “010-56253825”, “N”);4:服务消费者基于软负载均衡算法调用服务提供者的服务,这个服务提供者有可能是一个服务提供者列表,调用那个服务提供者就是根据负载均衡来调用了。 阅读详情

参考

dubbo官网:https://cn.dubbo.apache.org/zh-cn/overview/quickstart/java/spring-boot/
他人博客:https://blog.youkuaiyun.com/weixin_59334478/article/details/126725073

dubbo官网的改了改,不好使。别人的博客参考了下,可用。

项目结构

  • study:父模块,集中管理jar包版本等。api、provider、consumer是study的子模块
  • api:只提供接口,供服务提供者、服务消费者使用。
  • provider:服务提供者,依赖api模块。实现了api暴露的接口。
  • consumer:服务消费者,依赖api模块。调用api暴露的接口。
    在这里插入图片描述
    工作实践中,若想使用A部门的接口,只需要依赖A部门的api jar包aaa.jar,然后通过rpc远程调用A部门的服务。而aaa.jar中只有接口,没有更多内容,避免过多暴露内容。暴露的内容越少,以后事儿越少,避免改东西还得考虑下游系统。

编码

  • 在这个springboot集成dubbo的实例中,注册中心使用zookeeper,因此首先安装、启动zookeeper。

  • 项目中需要一个父模块,集中管理公共内容,因此新建个项目study,里面依赖了springboot对应的jar,并通过dependencyManagement集中管理公共jar的版本。

  • api模块只需要提供接口,没有其他内容,因此非常简洁干净。

  • provider需要依赖api模块,并实现api对应的接口。需要集成dubbo,需要集成zookeeper作为注册中心。

  • consumer需要依赖api模块,调用api对应的接口。需要集成dubbo,需要集成zookeeper作为注册中心,需要集成web写controller做测试。

zookeeper

zookeeper安装、启动参考:https://blog.youkuaiyun.com/ludkjava/article/details/134628293
zookeeper内容看起来麻烦,可以再弄个图形化界面工具prettyzoo,看起来更直观。
prettyzoo安装参考:

父模块

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ludk</groupId>
    <artifactId>study</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
<!--    子模块-->
    <modules>
        <module>provider</module>
        <module>api</module>
        <module>consumer</module>
    </modules>
    <properties>
        <java.version>1.8</java.version>
        <current.version>1.0-SNAPSHOT</current.version>
    </properties>
<!--    springbootjar-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.ludk</groupId>
                <artifactId>api</artifactId>
                <version>${current.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

api模块

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>study</artifactId>
        <groupId>com.ludk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ludk</groupId>
    <artifactId>api</artifactId>
    <packaging>jar</packaging>
</project>
接口定义IAPIService
package com.ludk.service;

/**
 * @author ludengke
 * @title: IAPIService
 * @projectName study
 * @description: TODO
 * @date 2023/11/2123:41
 */
public interface IAPIService {
    String test(String from);
}

provider模块

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>study</artifactId>
        <groupId>com.ludk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ludk</groupId>
    <artifactId>provider</artifactId>
    <packaging>jar</packaging>
    <properties>
        <dubbo.version>3.1.1</dubbo.version>
        <zookeeper.version>3.1.1</zookeeper.version>
    </properties>
    <dependencies>
        <!--加入公共项目的gav-->
        <dependency>
            <groupId>com.ludk</groupId>
            <artifactId>api</artifactId>
<!--            <version>1.0-SNAPSHOT</version>-->
        </dependency>

        <!--dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <!--zookeeper依赖:同时排除导入SLF4j依赖,以避免重复导入SLF4j依赖导致报错-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>${zookeeper.version}</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--springboot的jar -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
配置文件application.properties
#配置服务名称:等同于dubbo:application name="名称"
spring.application.name=study-provider

#配置扫描的包,扫描的@DubboService
#dubbo.scan.base-packages=com.ludk.dubboprovider.service

#配置dubbo协议
#dubbo.protocol.name=name
#dubbo.protocol.port=20881

#注册中心
dubbo.registry.address=zookeeper://localhost:2181
接口实现类ProviderServiceImpl
package com.ludk.dubboprovider.service;

import com.ludk.service.IAPIService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

/**
 * @author ludengke
 * @title: ProviderServiceImpl
 * @projectName study
 * @description: TODO
 * @date 2023/11/2123:44
 */
@Component

@DubboService(interfaceClass = IAPIService.class,version = "2.6.0" ,timeout = 15000)
public class ProviderServiceImpl implements IAPIService {
    @Override
    public String test(String from) {
        return "from"+from;
    }
}

启动类ProviderApplication
package com.ludk.dubboprovider;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author ludengke
 * @title: ProviderApplication
 * @projectName study
 * @description: TODO
 * @date 2023/11/2122:13
 */
@SpringBootApplication
@EnableDubbo //开启dubbo配置
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class,args);
    }

}

consumer模块

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>study</artifactId>
        <groupId>com.ludk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>consumer</artifactId>
    <properties>
        <dubbo.version>3.1.1</dubbo.version>
        <zookeeper.version>3.1.1</zookeeper.version>
    </properties>
    <dependencies>
        <!--加入公共项目的gav-->
        <dependency>
            <groupId>com.ludk</groupId>
            <artifactId>api</artifactId>
        </dependency>

        <!--dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <!--zookeeper依赖:同时排除导入SLF4j依赖,以避免重复导入SLF4j依赖导致报错-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>${zookeeper.version}</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </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.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
application.properties
#指定服务名称
spring.application.name=consumer-application
server.port=8081
#指定注册中心
dubbo.registry.address=zookeeper://localhost:2181
测试的Controller
package com.ludk.controller;

import com.ludk.service.IAPIService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author ludengke
 * @title: TestController
 * @projectName study
 * @description: TODO
 * @date 2023/11/221:20
 */
@Controller
public class TestController {

    @DubboReference(interfaceClass = IAPIService.class,version = "2.6.0",check = false)
    private IAPIService service;

    @RequestMapping("/test")
    @ResponseBody
    public String testInterface(){
        return service.test("消费端");
    }
}

消费端启动类
package com.ludk;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author ludengke
 * @title: ConsumerApplication
 * @projectName study
 * @description: TODO
 * @date 2023/11/221:23
 */
@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }

}

验证

启动zookeeper

在这里插入图片描述

启动服务端

注册中心发现了provider服务
在这里插入图片描述

启动消费端

注册中心发现消费端服务
在这里插入图片描述

访问消费端的controller

在这里插入图片描述

源码链接

后面补

SpringBoot系列之集成Dubbo的方式 SpringBoot系列之集成Dubbo的方式 本博客介绍Springboot框架集成Dubbo实现微服务的3种常用方式,对于Dubbo知识不是很熟悉的,请先学习我上一篇博客:SpringBoot系列之集成Dubbo实现微服务教程,本博客只是对上篇博客的补充,上篇博客已经介绍过的就不重复介绍 阅读详情

相关推荐

Dubbo与SpringBoot集成的微服务实战演示

本文还有配套的精品资源,点击获取 简介:本项目演示了如何将 Dubbo 和 SpringBoot 这两个流行的开源框架结合起来,构建一个高效且可扩展的微服务应用。通过深入探讨Dubbo的服务治理能力,如RPC通信、服务注册与发现、负载均衡、服务治理和监控,以及SpringBoot的快速起步、自动配置、内嵌服务器和健康检查特性,项目详细说明了整合这...

weixin_34640289的博客 1103

Dubbo---------------------SpringBoot项目示例

Dubbo---------------------SpringBoot项目示例

qq_42264638的博客 230

springboot+dubbo完整项目案例

该项目代码,是我自己整理的一套springboot+dubbo开发的一个案例,基本的生产者消费者注册中心都已经开发好了,其中dubbo-admin需要自行打包运行

SpringBoot集成Dubbo案例

SpringBoot集成Dubbo:Case1、什么是Duubo?2、概念架构2.1 提供者2.2 消费者2.3 注册中心3、SpringBoot集成Dubbo步骤:one:准备注册中心:two:准备服务的公共组件:three: 准备一个提供者的组件:three:完成消费者组件4、测试 1、什么是Duubo? Dubbo是一款高性能的,由阿里巴巴开发的一款RPC远程调用框架,已交由apache组织进行维护。他使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集

mmklo的博客 780

springboot + dubbo项目实例

maven集成了大部分目前主流的开发框架,运用阿里的公共开发库地址,启动springboot应用,就可以进行dubbo进行远程调用。支持maven打成war包,可作为系统开发的原形。

Kali Linux下Havoc框架编译避坑指南:从环境配置到成功运行的全流程

本文提供了在Kali Linux系统上成功编译和运行Havoc开源框架的详细指南。文章重点解析了从Go语言环境配置、系统依赖库安装到交叉编译环境搭建的全流程,并针对编译过程中常见的Qt、Boost及mingw-w64等依赖问题给出了具体的解决方案,帮助安全研究人员绕过常见陷阱,顺利完成环境部署。

weixin_29230865的博客 94

SpringBoot整合Dubbo简单示例

4.配置文件application.yml。返回:“xx”,你好!

qq_40210262的博客 419

微波传感器 - 从原理到实战,解锁非接触感知新维度

本文深入解析微波传感器的工作原理,重点阐述了其基于多普勒效应的非接触感知机制,并对比了红外、超声波等技术的优劣。通过树莓派Pico与RCWL-0516模块的实战案例,展示了如何构建区域入侵检测器,并探讨了微波传感器在智能家居、工业自动化及汽车电子等领域的广阔应用前景。

weixin_29306571的博客 223

Spring Boot 中使用 Dubbo 详解

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!(备注Java获取)**

2401_84010457的博客 4389

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

Michaelis–Menten 曲线 米氏曲线 纵坐标 反应速率求值 朗伯比尔定律

weixin_42809675的博客 2万+

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1001

dubbo与springboot的集成和使用dubbo-spring-boot-starter

dubbo最近更新了dubbo-spring-boot-starter的jar包,废话不多少,看看如何使用。首先我们可以通过github编译打包最新的starter,Git地址为:https://github.com/alibaba/dubbo-spring-boot-starter.git在springboot项目的pom.xml中新增,添加maven的依赖。 &lt;!--dubbo-spr...

花未央D8023的博客 5万+

【5G核心网】Packet Forwarding Model 数据包转发模型

CP 通过建立,修改,删除 PFCP 会话上下文,以及通过为每个 PFCP 会话赏析哪问提供 PDR FAR QER URR BAR,来控制 UP 面的数据包处理。 每一个 PDR 都包含 PDI(Packet Detection Information,包探测信息),一个或多个字段,与输入数据包进行匹配,并可能与以下规则相关联,从而提供了适用于与 PDI 匹配的数据包的指令集: - One FAR(包含了处理数据包的相关指令) an Apply Act...

zhonglinzhang 1万+

Springboot 集成dubbo 使用dubbo-spring-boot-starter

概述: Dubbo是阿里开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。同时Dubbo更是SOA服务治理的一种方案。 我们常常使用RestFul接口,以HTTP+JSON的形式暴露接口,但如果这样的接口很大,也是一种麻烦,所以有一种SOA的治理方案,这样可以暴露Dubbo服务接口,提供给Dubbo消费者使用RPC调用。 准...

大菠萝一号 2896

在 SAP 中实现“租赁资产”管理,核心是把 IFRS16/ASC842 等新租赁准则的要求落地到系统

摘要:本文详细介绍了在SAP S/4HANA系统中实现IFRS16/ASC842租赁准则的具体操作流程。主要内容包括:1) 系统前置配置,如激活租赁会计组件、定义租赁类型和会计科目;2) 租赁合同创建与主数据维护;3) 初始确认的会计处理;4) 日常折旧计提和租金支付流程;5) 合同变更与终止管理。通过RE-FX-LM模块与固定资产模块的集成,系统可自动生成使用权资产和租赁负债,支持从合同创建到报表披露的全生命周期管理,确保符合新租赁准则要求。

金牌架构师 984

基于matlab目标雷达横截面建模(附源码)

雷达系统依靠目标反射或散射来检测和识别目标。目标反射越强,雷达接收器返回的回波就越大,从而获得更高的信噪比(SNR)和更高的检测可能性。在雷达系统中,从目标反射的能量由雷达横截面(RCS)决定,定义为sigma代表RCS,R是雷达与目标之间的距离,Es是从目标反射的信号的场强,以及Ei是入射到目标上的信号的场强。通常,目标向各个方向散射能量,RCS是入射角,散射角和信号频率的函数。RCS 取决于目标的形状和构建目标的材料。用于RCS的常用单位包括平方米或dBsm。

珞瑜的博客 3083

【SpringBoot】| SpringBoot集成Dubbo

【SpringBoot】| SpringBoot集成Dubbo

m0_61933976的博客 4301

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 182

SpringBoot集成Dubbo

这次我们来实现一下springboot集成dubbo,并介绍一些dubbo的具体功能。然后包含一些zookeeker中的信息1.2.1 dubbo-parent 在dubbo-parent中引入parent为spring-boot-starter-parent 这里我们使用的版本为2.1.5。1.2.2 dubbo-dependency 有几点需要注意1.2.3 dubbo-consumer 1.2.4 dubbo-provider 1.2.5 dubbo-interface 内......

MX__LL的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

springboot快速集成dubbo

当springboot和dubbo走到了一起,那么如何让它两更快更容易的集成在一起呢?dubbo-spring-boot-starter帮助我们做到了这点,它实现了dubbo在springboot项目中自动配置(@EnableAutoConfiguration)。 dubbo-spring-boot-starter模块 dubbo-spring-boot-starter主要由以下部分内容组成: ...

相逢一笑 501

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【springBoot+Dubbo】springboot集成dubbo的简单项目

下载zookeeper 在官网下载zookeeper, 复制并重命名conf下的zoo_sample.cfg为zoo.cfg 并打开bin目录下的zkServer.cmd文件 创建项目 创建一个maven项目 springboot--dubbo-interface 创建两个springboot的springweb项目作为生产者与消费者 springboot-dubbo-provider springboot-dubbo-consumer 添加依赖 在生产者与消费者下的pom.xml文件内添加依赖 &l

H'Senseiの工坊 996

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot项目集成Dubbo

SpringBoot项目集成Dubbo

qq_51447436的博客 1万+
上一篇: windows 下安装zookeeper
下一篇: dubbo简介及部分特性使用
ludkjava
博客等级 码龄11年 173粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值