SpringBoot整合Dubbo

使用Dubbo构建一个RPC服务

准备工作

安装Zookeepr并启动

创建一个interface

  1. 新建一个Module名称为dubbo-interface


    interface
  2. 创建HelloService接口(服务端负责实现接口,客户端调用该接口)

public interface HelloService {
    public String sayHello(String name);
}

创建Provider

  1. 新建一个Module名称为dubbo-provider


    provider
  2. pom.xml中引入dubbo和zookeeper依赖



    com.alibaba.spring.boot
    dubbo-spring-boot-starter
    2.0.0




    com.101tec
    zkclient
    0.10

  1. 引入HelloService依赖

    com.shgx
    dubbo-interface
    1.0-SNAPSHOT

  1. 创建一个服务,负责实现HelloService逻辑
@Component
@Service(version = "1.0.0", timeout = 3000)
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}
  1. 在application.yml完成相关配置
spring:
  dubbo:
    application:
      name: provider
    server: true
    registry:
      address: zookeeper://127.0.0.1:2181
    protocol:
      name: dubbo
      port: 20880
  1. main中开启相关的配置并注册服务
@SpringBootApplication
// 开启dubbo的自动配置
@EnableDubboConfiguration
public class DubboProviderApplication {

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

}
provider

创建Consumer

  1. 新建一个Module名称为dubbo-consumer


    consumer
  2. 依赖的导入同Provider中的1和2

  3. 创建Controller调用服务端的HelloService

@RestController
public class HelloController {

    @Reference(version = "1.0.0", timeout = 3000)
    private HelloService helloService;

    @RequestMapping("/hello")
    public String hello() {
        String hello = helloService.sayHello("world");
        System.out.println(helloService.sayHello("Hello Dubbo!!!"));
        return hello;
    }
}
  1. 在application.yml完成相关配置
spring:
  dubbo:
    application:            #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
      name: consumer
    registry:                 #注册中心配置,用于配置连接注册中心相关信息。
      address: zookeeper://127.0.0.1:2181
    protocol:     #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受(订阅)。
      name: dubbo
      port: 20880
    consumer:
      check: false
    reference:
      loadbalance: roundrobin #轮询机制
      #loadbalance: random #随机机制
      #loadbalance: leastactive #最少活跃调用数机制
  1. main中开启相关的配置
@SpringBootApplication
@EnableDubboConfiguration
public class DubboConsumerApplication {

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

}
consumer
  1. 输入http://localhost:8083/hello调用配置
    hello

返回"Hello World"并打印"Hello Dubbo!!!"


dubbo

踩坑

  • SpringBoot版本不能太高,建议2.0.3.RELEASE,Dubbo版本2.0.0,Zookeeper版本10.0
  • Provider中的@Service是import com.alibaba.dubbo.config.annotation.Service;包

源码下载

SpringBoot_Dubbo

你可能感兴趣的:(SpringBoot整合Dubbo)