springboot2.x純註解整合dubbo
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
&n