springboot1.x 和 springboot2.x 整合差距挺大的, 基于最新的 2.x 进行整合, 使用纯注解的方式
依赖选取
首先 pom 文件的依赖引入, maven 仓库有 Apache 和 alibaba 两个
Dubbo 早已孵化完成, 破壳而出, 成为 Apache 顶级项目, 这里引用 Apache 的 maven 依赖
框架搭建
采用 maven 聚合项目, 架构如图所示
详细层级结构图
API 公用的 entity 和 service 接口
provider-log log 服务提供方
provider-message message 服务提供方
consumer 消费方
引入依赖
顶级 pom.xml 引入 spring-boot-starter-parent, 使用新版 2.1.6.release
三个聚合模块
- <modules>
- <module>API</module>
- <module>provider-log</module>
- <module>provider-message</module>
- </modules>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.1.6.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <dependencies>
- <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>
API 模块用于提供 dubbo 服务接口, 所以将 dubbo 的依赖添加在 API 里面, 是有些不妥
- API->pom.xml
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-spring-boot-starter</artifactId>
- <version>2.7.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.7.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-dependencies-zookeeper</artifactId>
- <version>2.7.1</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
- <type>pom</type>
- </dependency>
其余的三个工程, 都是引入父工程, 依赖引入 API,spring-boot-starter-web 可选, 提供 Web 服务的话加上, 不提供服务可以不加
- <parent>
- <groupId>com.chy.wx</groupId>
- <artifactId>spring-boot-dubbo</artifactId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <dependencies>
- <dependency>
- <groupId>com.chy.wx</groupId>
- <artifactId>sea-API</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-Web</artifactId>
- </dependency>
- </dependencies>
API 添加两个 entity 和两个 service, 更有区分性
配置文件
两个提供者 provider, 为的是更有区分性, application 配置, 这里采用 yuml 语法.
跟 springboot1.x 的区别是, dubbo 单独开头, 前面并没有 spring
- server:
- port: 8081
- dubbo:
- application:
- name: sea-provider-log
- registry:
- protocol: zookeeper
- address: 192.168.1.222:2181
- protocol:
- name: dubbo
- port: 20887
- version: 1.0.0
- scan:
- base-packages: com.log
参数说明
dubbo.application.name 给 provider 起的名称
dubbo.registry.address 表示注册的地址, 不一定非得是 zookeeper
dubbo.protocol.name 就是 dubbo
dubbo.protocol.port 是注册的端口号, 多个提供者使用的 port 需要区分开来
dubbo.protocol.scan 是表示扫描哪些包下面的服务
version 是自定的一个版本属性
发布的服务通过 @Service 注解, 加载被扫描的实现类上面, 这里使用的是 dubbo 的注解
启动类上面添加 @EnableDubbo 注解
测试发布
命令操作查看
通过如下命令进入 dubbo
telnet 192.168.1.222 21880
查看发布的服务使用 ls
如下表示 ErrorLogService 发布成功, 且版本为 1.0.0
更多命令查看 Telnet 命令参考手册
Web 服务查看
感觉不直观可以下载 dubbo-admin 监控工程, 配置 application.xml, 之后启动查看
release 版本 https://github.com/apache/dubbo/releases 下载运行即可
或者下载我已经上传的 dubbo-admin.war 包 (博客园上传限制为 10M)
百度云
链接: https://pan.baidu.com/s/18QSZLySLj8az11ebQJvG1Q
提取码: 2jgy
CSDN
觉得慢快速下载地址:
将 war 包放入 tomcat 的 webapps 目录下, 启动会自动解压
之后将 application.xml 修改成自己的 zookeeper 地址即可
默认用户名和密码都为 root
启动访问即可, 默认的根路径为文件夹的名字, 访问如图所示即可以看详细信息
Web 调用方使用 @Reference 注解即可, 如果提供了版本号需要加版本号, 如下所示
完整的 dubbo-demo
仅需要修改 YAML 的 zookeeper 地址即可
https://github.com/chywx/spring-boot-dubbo
来源: https://www.cnblogs.com/chywx/p/11180719.html