【Dubbo-1】环境搭建
前言
现在(2024年12月1日15点50分)想做一门课程,不知道从什么入手;偶然发现dubbo是自己没有了解过的,那么就从这里开始吧!
版本说明
Dubbo Github地址:https://github.com/apache/dubbo
文档地址:https://dubbo.apache.org/
既然是这个 2024年时间点开始的学习,那么开发Demo肯定是用比较新,先来看下官方推荐的版本关系:
该系例学习课程版本定义为:
JDK17、SpringBoot2.X、Dubbo3.3.x.
Dubbo Samples 启动
官方入门案例:https://github.com/apache/dubbo-samples;IDEA 拉下刷新 MAVEN 后需要下载相关的依赖包、等待一下:
安装完成依赖后;项目代码就不会爆红了;启动服务前 org.apache.dubbo.samples.quickstart.QuickStartApplication
;需要设置一下本地的 Nacos 地址:
启动成功后为看到消费端对提供端发起调用调用:
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 服务端开发规则或规范:
- 分层 API 和 Service
- API 包下主要是接口服务定义,如该例子中后续服务端发布的服务,消费端订阅的服务都是围绕着
DemoService
接口展开的。
public interface DemoService {
String sayHello(String name);
}
- 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);
}
}
CommandLineRunner
是 Spring Boot
提供的一个接口,用于在应用程序启动后执行特定的任务。实现该接口的类需要重写 run 方法,该方法会在 SpringApplication.run(Args...)
方法执行完毕后被调用。通常用于执行初始化操作、数据加载、测试等任务。
但是在实际情况下;服务方和调用方都需要用到dubbo.api
下的DemoService(举例子);所以在两个项目中都需要引用 API 下打成的 JAR 包。