1. 程式人生 > >springboot2.x純註解整合dubbo

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