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