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
覺得慢快速下載地址:https://download.csdn.net/download/qq_37933127/10569470
將war包放入tomcat的webapps目錄下,啟動會自動解壓
之后將application.xml修改成自己的zookeeper地址即可
默認用戶名和密碼都為root
啟動訪問即可,默認的根路徑為文件夾的名字,訪問如圖所示即可以看詳細信息
web調用方使用@Reference注解即可,如果提供了版本號需要加版本號,如下所示
完整的dubbo-demo
僅需要修改yml的zookeeper地址即可
https://github.com/chywx/spring-boot-dubbo