Skip to content

【Dubbo-1】环境搭建

709字约2分钟

Dubbo

2024-12-01

前言

现在(2024年12月1日15点50分)想做一门课程,不知道从什么入手;偶然发现dubbo是自己没有了解过的,那么就从这里开始吧!

版本说明

Dubbo Github地址:https://github.com/apache/dubbo

文档地址:https://dubbo.apache.org/img

既然是这个 2024年时间点开始的学习,那么开发Demo肯定是用比较新,先来看下官方推荐的版本关系:

img

该系例学习课程版本定义为:

JDK17、SpringBoot2.X、Dubbo3.3.x.

Dubbo Samples 启动

官方入门案例:https://github.com/apache/dubbo-samples;IDEA 拉下刷新 MAVEN 后需要下载相关的依赖包、等待一下:

img

注意

  • 运行示例要求 JDK 17+ 版本。

  • 由于配置文件中启用了注册中心,您需要首先在本地启动 Nacos 注册中心 server。

这里暂时就不介绍 NACOS 了;看后续反馈情况。

安装完成依赖后;项目代码就不会爆红了;启动服务前 org.apache.dubbo.samples.quickstart.QuickStartApplication;需要设置一下本地的 Nacos 地址:

img

启动成功后为看到消费端对提供端发起调用调用:

2024-12-01T16:17:30.589+08:00  INFO 19508 --- [           main] o.a.d.c.deploy.DefaultModuleDeployer     :  [DUBBO] Dubbo Module[1.1.1] has completed., dubbo version: 3.3.0, current host: 192.168.1.6
2024-12-01T16:17:30.589+08:00  INFO 19508 --- [           main] o.a.d.c.d.DefaultApplicationDeployer     :  [DUBBO] Dubbo Application[1.1](QuickStartApplication) has completed., dubbo version: 3.3.0, current host: 192.168.1.6
2024-12-01T16:17:30.589+08:00  INFO 19508 --- [           main] o.a.d.s.q.QuickStartApplication          : Started QuickStartApplication in 8.92 seconds (process running for 10.205)
Receive result ======> Hello world
2024-12-01T16:17:30.663+08:00  INFO 19508 --- [pool-2-thread-1] .b.c.e.AwaitingNonWebApplicationListener :  [Dubbo] Current Spring Boot Application is await...

Dubbo快速入门

quickstart-service 下分为服务端(DemoServiceImpl)和调用端(Consumer);

Service 服务端开发规则或规范:

  1. 分层 API 和 Service
  2. API 包下主要是接口服务定义,如该例子中后续服务端发布的服务,消费端订阅的服务都是围绕着 DemoService 接口展开的。
public interface DemoService {
    String sayHello(String name);
}
  1. Service 包下主要是定义对应的业务逻辑实现
@DubboService
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

该例子中的 Receive result ======> Hello world 服务调用是由该代码实现:

@Component
public class Consumer implements CommandLineRunner {
    @DubboReference
    private DemoService demoService;

    @Override
    public void run(String... args) throws Exception {
        String result = demoService.sayHello("world");
        System.out.println("Receive result ======> " + result);
    }
}

CommandLineRunnerSpring Boot 提供的一个接口,用于在应用程序启动后执行特定的任务。实现该接口的类需要重写 run 方法,该方法会在 SpringApplication.run(Args...) 方法执行完毕后被调用。通常用于执行初始化操作、数据加载、测试等任务。

但是在实际情况下;服务方和调用方都需要用到dubbo.api 下的DemoService(举例子);所以在两个项目中都需要引用 API 下打成的 JAR 包。