dubbo與springboot的集成


 

1.添加dubbo-spring-boot-starter依賴

       <!-- dubbo依賴 -->
       <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

2.添加zookeeper依賴

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3.添加zkclient依賴

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

4.新建個普通的java工程,用來定義服務(API接口),如下:

package com.example.dubboTestApi.api;

public interface SayHelloApi {
    String say(String name);
}

5.新建一個springboot類型的服務實現工程,具體見springboot創建功能文章

6.配置文件修改:

#WEB服務端口
server.port=8081

## dubbo 配置
spring.dubbo.application.id=live-dubbo-provider
spring.dubbo.application.name=live-dubbo-provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.server=true
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880

7.啟動類修改,增加@EnableDubboConfiguration注解

@EnableDubboConfiguration
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

8.服務實現,先添加API接口依賴

<dependency>
            <groupId>com.example.dubboTestApi</groupId>
            <artifactId>dubboTestApi</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

 注意這里加了一個retries = 0,默認情況下超時時dubbo會自動重掉三次,這樣的重復調用很容易導致一些問題,所以這里用retries = 0來關閉超時重試功能。

@Service(interfaceClass = SayHelloApi.class,retries = 0)
@Component
public class SayHelloApiService implements SayHelloApi{

    @Override
    public String say(String name) {
        if(StringUtils.isBlank(name)){
            return "error,name is blank";
        }
        return name + ",hello dubbo api";
    }

}

9.新建一個springboot類型的服務調用工程,具體見springboot創建功能文章

10.添加dubbo,zookeeper,zkclient相關依賴。

11.配置文件修改

## WEB服務端口
server.port=8082
 
## Dubbo 配置
spring.dubbo.application.name=live-dubbo-consumer
spring.dubbo.application.id=live-dubbo-consumer
spring.dubbo.protocol.port=20800
spring.dubbo.protocol.name=dubbo
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

12.修改啟類:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

@EnableDubboConfiguration
@SpringBootApplication
public class DubboConsumerTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerTestApplication.class, args);
    }
}

 

13.添加api接口依賴

<dependency>
            <groupId>com.example.dubboTestApi</groupId>
            <artifactId>dubboTestApi</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

14.創建使用api例子

 

import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.dubboTestApi.api.SayHelloApi;

@Component
public class DubboConsumerTest {
     @Reference
     private SayHelloApi sayHelloApi;
     
     public String testSay(){
        System.out.println(sayHelloApi.say("dubbo"));
        return "dubbo test success";
     }

}

15.另外,為了便於理解,上面分成三個項目,API定義,服務提供,服務消費 。但是一個應用,既可以提供服務,也可以調用其他項目提供的服務。,一般也是這樣的情況。

16.注意事項

默認情況下,服務端沒啟動,消費端是不能啟動的。可以配置一下讓消費端啟動的時候不去檢查服務是否存在。

spring.dubbo.reference.check=false  

另外,dubbo默認超時會重試兩次,這樣的重試有時會產生很大問題,所以建議關閉。關閉有兩種方式:

在服務上加注解:

@Service(interfaceClass = AccountUpdateApi.class,retries = -1) 
注意這里重試次數寫成-1,經測試,dubbo版本(2.6.0)寫成0無效。

另一種方式,配置文件:

spring.dubbo.provider.retries=-1

 

17.安裝dubbo admin后(安裝非常簡單,直接將war包放在tomcat下運行即可),可以在頁面查看服務情況

 

 

 

需要項目代碼,可以發郵件zhuyuehua110@163.com


免責聲明!

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



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