spring-boot 集成 dubbo

spring-boot 集成 dubbo

首先通过安装zookeeper,我这里使用的docker,有了docker感觉这个世界都简单了

//项目根目录下敲这行命令就好,docker 会自动去下zookeeper的镜像,
// 下完镜像就会将其启动起来
  docker-compose up -d 
  • compon-api 公共api模块

  • server-provider 服务提供模块

  • server-customre 消费模块

公共api模块

这里我写的比较简单就是使用了一个hello方法

    String hello(String message);

服务提供模块

maven依赖

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>com.alibaba.spring.bootgroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.0.0version>
        dependency>
        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.8version>
        dependency>
        <dependency>
            <groupId>com.101tecgroupId>
            <artifactId>zkclientartifactId>
            <version>0.10version>
        dependency>
        
        <dependency>
            <groupId>com.niezhilianggroupId>
            <artifactId>common-apiartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

启动类

@SpringBootApplication
@EnableDubboConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

配置文件

server:
  port: 8080
spring:
  dubbo:
    application:
      # 服务名称,保持唯一
      name: server-provider
    # zookeeper地址,用于向其注册服务
    registry:
      address: zookeeper://127.0.0.1:2181
    #暴露服务方式
    protocol:
      # dubbo协议,固定写法
      name: dubbo
      # 暴露服务端口 (默认是20880,不同的服务提供者端口不能重复)
      port: 20880
    # 表示服务提供者,即服务暴露方
    server: true
    # 扫描需要暴露服务的类路径
    scan: com.niezhiliang.spring.boot.dubbo.server.provide.serviceImpl

暴露的方法

//注意这个是dubbo的注解 不是spring的注解
@Service(interfaceClass = HelloService.class)
@Component
public class HelloServiceImpl implements HelloService {

    @Override
    public String hello(String message) {
        return "hello,"+message;
    }
}

服务消费模块

maven依赖

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>com.alibaba.spring.bootgroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.0.0version>
        dependency>
        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.8version>
        dependency>
        <dependency>
            <groupId>com.101tecgroupId>
            <artifactId>zkclientartifactId>
            <version>0.10version>
        dependency>
        
        <dependency>
            <groupId>com.niezhilianggroupId>
            <artifactId>common-apiartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

配置文件

server:
  port: 8888

spring:
  dubbo:
    application:
      # 服务名称,保持唯一
      name: server-consumer
      # zookeeper地址,用于向其注册服务
    registry:
      address: zookeeper://127.0.0.1:2181
    protocol:
      # dubbo协议,固定写法
      name: dubbo
    # 扫描需要调用服务的类路径
    scan: com.niezhiliang.spring.boot.dubbo.server.customer.controller

启动类

@SpringBootApplication
@EnableDubboConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

调用服务提供模块方法代码

@RestController
public class IndexController {
    @Reference//dubbo内置注解
    private HelloService helloService;

    @RequestMapping(value = "hello")
    public String hello() {
        return helloService.hello("suyu");
    }
}

参考文章:https://mrbird.cc/Spring-Boot-Dubbo-Zookeeper.html

项目源码:https://github.com/niezhiliang/spring-boot-dubbo

你可能感兴趣的:(java)