环境准备篇

本文目的是关于Dubbo纯注解版的使用以及注册中心采用nacos,所以在工程结构以及命名方面可能不是那么规范

首先我们看一下整体的工程结构,你可以简单的理解成有两个springboot工程,都引入了一个公共的模块或者公共包,而这个公共模块就是专门来放暴露的接口的

相关依赖

对应springboot工程使用dubbo非常简单,只需要引入dubbo依赖即可,但是最好注意一下版本(两个工程依赖都一致的)

<!-- SpringBoot 依赖配置 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.12-SNAPSHOT</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!--dubbo相关-->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.12</version>
</dependency>

<!--因为要采用nacos注册中心-->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-registry-nacos</artifactId>
    <version>2.7.12</version>
</dependency>

nacos准备

学习使用的目的,所以nacos只需要准备个单机即可,也无需考虑数据持久化问题,直接去nacos地址open in new window下载一个部署即可,我是liunx环境,下载是2.0.3版本的(版本无所谓)

liunx中解压后直接去bin目录下 运行命令启动即可

bash startup.sh -m standalone

默认端口是8848 ,这时候输入网址http://xxxxxx:8848/nacosopen in new window 打开成功就OK了,默认账号密码

nacos nacos

代码编写

首先在公共模块中新建一个接口 TestService

public interface TestService {

    String test(String message);
}

服务提供者

dubbo-annotation-producer工程:就是把自己的一些接口服务暴露出去可以让别的服务调用

配置文件

server:
  port: 8081

dubbo:
  registry:
    # 注册中心地址 采用nacos
    address: nacos://IP:PORT
    # 分组
    group: DUBBO_TEST
  protocol:
    # 协议选择  这里选择dubbo
    name: dubbo
    # 通信端口
    port: 22223
  application:
    # 应用名称 服务名即可
    name: dubbo-producer
  scan:
    # 需要暴露接口的包名(可以理解为mybatis中扫描mapper)
    base-packages: cn.colins.api

接口实现:添加@DubboService注解

@Component
// 此注解代表将该接口服务暴露出去
@DubboService
public class ProducerTestService implements TestService {
    public String test(String message) {
        return message;
    }
}

启动类:添加@EnableDubbo注解

@EnableDubbo
@SpringBootApplication
public class DubboAnnotationProducerApplication {

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

}

服务使用者

dubbo-annotation-consumer工程:调用别的服务暴露出去的接口服务

配置文件

server:
  port: 9000

dubbo:
  registry:
    # 注册中心地址 采用nacos
    address: nacos://IP:PORT
    # 分组
    group: DUBBO_TEST
  protocol:
    # 协议选择  这里选择dubbo
    name: dubbo
    # 通信端口
    port: 33333
  application:
    # 应用名称 服务名即可
    name: dubbo-consumer
  scan:
    # 需要暴露接口的包名(可以理解为mybatis中扫描mapper)
    base-packages: cn.colins.api

接口调用:就是常规的controller层写法,但是服务不在是从spring容器中取了,而是采用@DubboReference注解从dubbo中获取

@RestController
public class ConsumerTestController {

    // check代表启动不检查
    @DubboReference(check = false)
    private TestService testService;

    @GetMapping("/test")
    public String test(String message){
        return testService.test(message);
    }
}

启动类:添加@EnableDubbo注解

@EnableDubbo
@SpringBootApplication
public class DubboAnnotationConsumerApplication {

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

}

整体结构图

结果

两个工程启动后,可以在nacos控制台服务中看到

浏览器请求接口

这样简单的环境就搞定了,只需要注意producer和consumer这样命名只是为了更好的理解,服务提供者和服务调用者的概念,事实上每个微服务都可以即是提供者,也是调用者,可以看到用注解比用xml要简单方便的多,以前的容器是spring提供的,现在可以理解为有个dubbo的容器,可以往里面塞服务和取服务

Last Updated: