欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
《dubbo实战》系列导航准备和初体验
与SpringBoot集成
使用Zookeeper注册中心
管理控制台dubbo-admin
本篇概览本文是《dubbo实战》系列的第二篇,一起来实战SpringBoot(2.3.3.RELEASE版本)与dubbo的集成,这也是分布式服务的常用技术组合,本文由以下内容组成:
创建子工程springbootmulticastprovider,对外提供服务;
创建子工程springbootmulticastconsumer,启动后提供一个web接口,咱们调用这个web接口时,springbootmulticastconsumer会远程调用springbootmulticastprovider提供的服务,如下图:
本篇的实战暂不使用注册中心,而是服务提供方启动时广播自己的地址,再由消费方启动时订阅,并随时远程调用,调用逻辑如下图所示:
源码下载如果您不想编码,可以在GitHub下载所有源码,地址和链接信息如下表所示:
名称 链接 备注项目主页 https://github.com/zq2599/blog_demos 该项目在GitHub上的主页
git仓库地址(https) https://github.com/zq2599/blog_demos.git 该项目源码的仓库地址,https协议
git仓库地址(ssh) git@github.com:zq2599/blog_demos.git 该项目源码的仓库地址,ssh协议
这个git项目中有多个文件夹,本章的应用在dubbopractice文件夹下,如下图红框所示:
3. dubbopractice是父子结构的工程,本篇的代码在springbootmulticastprovider和springbootmulticastconsumer这两个子工程中,如下图: 编码(服务提供方)
先创建提供服务的工程springbootmulticastprovider,一共要创建4个文件,创建顺序和功能如下表:
创建顺序 文件名 作用1 pom.xml 工程的pom文件
2 src/main/resources/application.yml 配置文件
3 DemoServiceImpl.java 提供具体的服务
4 SpringBootMulticastProviderApplication.java 启动类
完整的文件位置如下图:
接下来逐个创建上述内容;
创建名为springbootmulticastprovider的子工程,pom.xml内容如下,要重点关注的是新增依赖dubbo-spring-boot-starter,这就是dubbo在SpringBoot环境的starter依赖:
<?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 "> <parent> <artifactId>dubbopractice</artifactId> <groupId>com.bolingcavalry</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.bolingcavalry</groupId> <artifactId>springbootmulticastprovider</artifactId> <version>1.0-SNAPSHOT</version> <name>springbootmulticastprovider</name> <description>Demo project for dubbo service provider from Spring Boot, multicast mode</description> <!--不用spring-boot-starter-parent作为parent时的配置--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <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> <dependency> <groupId>com.bolingcavalry</groupId> <artifactId>practiceinterface</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springboot.version}</version> </plugin> </plugins> </build> </project>