springboot2.x純注解整合dubbo


springboot1.x和springboot2.x整合差距挺大的,基於最新的2.x進行整合,使用純注解的方式

依賴選取

首先pom文件的依賴引入,maven倉庫有Apachealibaba兩個

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>

其余的三個工程,都是引入父工程依賴引入apispring-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包放入tomcatwebapps目錄下,啟動會自動解壓

之后將application.xml修改成自己的zookeeper地址即可

默認用戶名和密碼都為root

啟動訪問即可,默認的根路徑為文件夾的名字,訪問如圖所示即可以看詳細信息

 

web調用方使用@Reference注解即可,如果提供了版本號需要加版本號,如下所示

完整的dubbo-demo 

僅需要修改yml的zookeeper地址即可

https://github.com/chywx/spring-boot-dubbo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM