Dubbo入门-通过spring-boot来动手实践

news/2025/10/17 17:59:13/文章来源:https://www.cnblogs.com/songhahahaha/p/19135757

第一种--快速创建应用

可以直接下载示例项目,链接:https://github.com/apache/dubbo-samples/tree/master/11-quickstart

第二种--新建项目

新建 Java 空白 Maven 项目

  • jdk17

之后我们还需要创建 dubbo-spring-boot-demo-interfacedubbo-spring-boot-demo-provider dubbo-spring-boot-demo-consumer 三个子模块。

image

在父项目的pom.xml中 添加:

<groupId>org.example</groupId><artifactId>dubbo-spring-boot-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>dubbo-spring-boot-demo-interface</module><module>dubbo-spring-boot-demo-provider</module><module>dubbo-spring-boot-demo-consumer</module></modules><properties><dubbo.version>3.2.0-beta.4</dubbo.version><spring-boot.version>2.7.8</spring-boot.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><version>${dubbo.version}</version><type>pom</type></dependency></dependencies></dependencyManagement><build><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin></plugins></pluginManagement></build>

consumerprovider模块的pom.xml中 添加:

<dependencies><dependency><groupId>org.example</groupId><artifactId>dubbo-spring-boot-demo-interface</artifactId><version>${project.parent.version}</version></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><type>pom</type><exclusions><exclusion><artifactId>slf4j-reload4j</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency><!-- spring boot starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>

在这份配置中,定义了 dubbo 和 zookeeper(以及对应的连接器 curator)的依赖。
添加了上述的配置以后,先通过mvn clean install构建interface模块,之后 可以通过 Mvn - Reload All Maven Projects 刷新依赖。

定义服务接口

服务接口 Dubbo 中沟通消费端和服务端的桥梁。

dubbo-spring-boot-demo-interface 模块的 org.apache.dubbo.samples.api 下建立 DemoService 接口

package org.apache.dubbo.springboot.demo;public interface DemoService {String sayHello(String name);
}

DemoService 中,定义了 sayHello 这个方法。后续服务端发布的服务通过实现 DemoService 接口,消费端订阅的服务也是围绕这个接口的。

实现接口服务

定义了服务接口之后,可以在服务端这一侧定义对应的实现,这部分的实现相对于消费端来说是远端的实现,本地没有相关的信息。

image

DemoServiceImpl 类中添加了 @DubboService 注解,通过这个配置可以基于 Spring Boot 去发布 Dubbo 服务

配置YAML文件

通过 Spring Boot 的方式配置 Dubbo 的一些基础信息。例如这个例子:定义了 Dubbo 的应用名、Dubbo 协议信息、Dubbo 使用的注册中心地址。

在服务端和消费端分别创建application.yml文件

# 服务端
dubbo:application:name: dubbo-springboot-demo-providerprotocol:name: dubboport: -1registry:address: zookeeper://${zookeeper.address:127.0.0.1}:2181
------------------------------------------------------------------
# 消费端
dubbo:application:name: dubbo-springboot-demo-consumerprotocol:name: dubboport: -1registry:address: zookeeper://${zookeeper.address:127.0.0.1}:2181

创建Spring启动类

基于 Spring 配置服务端启动类

package org.apache.dubbo.springboot.demo.provider;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDubbo
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}

这个服务端,消费端同理。在这启动类里,配置了ProviderApplication去读取刚才的YAML配置文件并启动应用。

写一个消费端的服务调用

package org.apache.dubbo.springboot.demo.consumer;import java.util.Date;import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.springboot.demo.DemoService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class Task implements CommandLineRunner {@DubboReferenceprivate DemoService demoService;@Overridepublic void run(String... args) throws Exception {String result = demoService.sayHello("xf");System.out.println("Receive result ======> " + result);new Thread(()-> {while (true) {try {Thread.sleep(1000);System.out.println(new Date() + " Receive result ======> " + demoService.sayHello("world"));} catch (InterruptedException e) {e.printStackTrace();Thread.currentThread().interrupt();}}}).start();}
}

在这个类中,通过@DubboReferenceDubbo 获取了一个 RPC 订阅,这个 demoService 可以像本地调用一样直接调用。在 run方法中创建了一个线程进行调用。

启动应用

  1. 在启动应用前,需要启动zookeeper当注册中心。
    在zookeeper的bin目录下使用命令行启动./zkServer.sh start
  2. 启动 org.apache.dubbo.samples.provider.Application ,等待一会出现如下图所示的日志(Current Spring Boot Application is await)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。
    image
  3. 启动org.apache.dubbo.samples.client.Application ,等待一会出现如下图所示的日志(Hello world )即代表服务消费端启动完毕并调用到服务端成功获取结果。
    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ceph rdb做k8s后端存储(ceph-csi storageclass

环境:Os:Centos 7k8s:v1.28 ceph:14.2.22###############################################ceph端分配存储##############################1.分配osd pool和创建用户[root@master tmp]#ceph osd pool create dynamics-…

2025 最新火烧板源头厂家推荐排行榜:自有矿山加持 + 品质卓越,芝麻灰 / 五莲花等石材采购优选指南

当前火烧板市场面临多重采购困境:部分厂家缩减生产流程导致产品色泽不均、质地松软,难以适配建筑与装修行业的高品质需求;多数中小型商家缺乏自有矿山,原材料依赖外购,常因供应中断或品质波动延误工程进度;加工精…

【IEEE出版、吉首大学主办】第二届智能机器人与自动控制国际学术会议 (IRAC 2025)

第二届智能机器人与自动控制国际学术会议 (IRAC 2025) 2025 2nd International Conference on Intelligent Robotics and Automatic Control 在这里看会议官网详情 中国-吉首 | 2025年11月28日-30日 收录类型:IEEE …

第三次课动手动脑合集

链接:https://files.cnblogs.com/files/blogs/847696/动手动脑3.zip?t=1760694634&download=true编译错误的原因是:在Test类的main方法中,尝试创建Foo类的对象obj1时,没有传递任何参数。但Foo类定义了一个带参…

2025 年火山石厂家最新推荐排行榜:聚焦自有矿藏与全自动生产,涵盖滤料填料等多品类企业权威指南人工湿地填料/人工湿地滤料/黑色/红色火山石厂家推荐

当前火山石应用已广泛覆盖污水处理、人工湿地、园林造景等多个领域,市场需求持续攀升,但采购端却面临诸多困境。不少采购方因缺乏专业判断,难以辨别厂家资质,常遭遇原料不稳定导致的产品性能波动、生产设备落后引发…

mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境

mysql5.7.44升级到8.0.34 mysql跨版本升级实战操作 windows环境背景 服务器当前数据库版本为mysql5.7.22 通过小版本直接升级到mysql5.7.44 (5.7.44是当前大版本最新状态);然后我们通过mysql5.7.44 可直接升级到my…

【SPIE出版、往届已检索】第十届能源系统、电气与电力国际学术会议 (ESEP 2025)

ESEP 2025已通过SPIE - The International Society for Optical Engineering (ISSN: 0277-786X)出版审核,EI 见刊检索稳定! 第十届能源系统、电气与电力国际学术会议 (ESEP 2025) 2025 10th International Conferenc…

2025 防火隔断厂家最新推荐排行榜:甲级防火玻璃隔断厂家深度测评,精选优质品牌助力采购决策

引言随着建筑行业对防火安全的要求日趋严苛,防火隔断作为关键防护设施,市场需求持续攀升,但行业乱象却让采购者陷入困境。部分品牌缺乏核心技术,产品耐火性能不达标,无法在火灾中有效阻隔火势与有毒烟气;新兴品牌…

2025-10-17

2025-10-17今天测试新写的npc,发现参考的那个微架构图有问题(或者说还不够完善),修改之后dummy测试程序通过了,但是add测试程序有问题,发现一直在死循环。这一刻我才意识到cpu出了问题调试起来会有多难受,这还是…

2025 年最新推荐!国内优质球墨铸铁管厂家排行榜,涵盖市政 / 给水 / 水利工程用管,助力采购高效选材

当前基础设施建设对球墨铸铁管需求持续增长,但市场品牌繁杂、质量参差不齐,部分产品存在抗压性不足、防腐性能差等问题,给工程质量埋下隐患。采购方在选择时,常因缺乏专业鉴别能力,难以精准挑选适配市政、给水、水…

Nexpose 8.24.0 for Linux Windows - 漏洞扫描

Nexpose 8.24.0 for Linux & Windows - 漏洞扫描Nexpose 8.24.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Oct 15, 2025 请访问原文链接:https://sysin.org/blog/…

有趣评测小程序系统:开启视频与答题变现新创业风口

在当下小程序创业热潮中,一款兼具实用性与盈利性的工具成为众多创业者的迫切需求。有趣评测小程序系统作为 “天天变现” 的配套小程序,凭借答题与视频变现的核心功能,依托微擎系统实现便捷交付,为微信小程序创业者…

看图猜成语达人小程序:一站式趣味与变现解决方案

在小程序生态蓬勃发展的当下,兼具娱乐性与商业价值的应用成为市场热点。“看图猜成语达人” 小程序依托微擎系统,融合经典成语文化与创新互动模式,不仅为用户带来沉浸式猜谜体验,更为主理人提供低门槛、高潜力的流…

Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, released October 15, 2025 请访问原文链接…

设备租赁归还小程序系统:免人工化租赁管理解决方案

在设备租赁场景中,人工登记效率低、押金退还流程繁琐、用户数据难追溯等问题长期困扰运营者。这款基于微擎系统开发的设备租赁归还小程序,以 “免人工” 为核心亮点,覆盖从用户租赁下单、押金垫付到管理员审核归还、…

Navcat如何上传数据大的sql文件?

1.选中当前需要导入数据库的服务器,右键选择“新建数据库”; 2.选中数据库下的表,右键打开菜单,选中 “运行SQL文件”,选中文件 3.选中文件后,其余设置保持默认,点击开始,上传文件 4.等待上传完毕,提示Finis…

实测PaddleOCR-VL:文心4.5最强衍生模型如何重构文档处理效率

百度最新开源的PaddleOCR-VL基于ERNIE-4.5-0.3B语言模型训练,以92.6分登顶OmniDocBench V1.5榜单,成为当前性能最强的OCR多模态模型。该模型突破性地采用两阶段处理架构:先通过PP-DocLayoutV2进行版面分析与阅读顺序…

高考语文 词类活用

定义:词类活用是指某些词临时改变其基本语法功能去充当其他词类,或者基本功能未变而用法比较特殊的现象。 汉语的词类和句法成分(主谓宾定状补)不存在简单的一一对应关系,但是我们可以将大多数情况下词类与句法成…

使用Scalar.AspNetCore来管理你的OpenApi

一直觉得很好的一个组件,网上介绍少得可怜,没办法,只有自己爬官网了,又是对照git又是看doc文档,总算是玩明白了,现在完全抛弃那个谁谁谁了。因人喜好各取所长吧 先来官方参考地址: https://learn.microsoft.com…