当前位置:   article > 正文

Spring Boot 快速整合 Dubbo + Nacos_springboot3 + apache dubbo + nacos集成

springboot3 + apache dubbo + nacos集成

本文章基于dubbo-spring-boot-starter最新依赖,快速搭建spring boot dubbo工程,采用nacos作为注册中心。

Spring boot 版本:3.2.5

 java 版本:17

项目结构

1、主要依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.apache.dubbo</groupId>
  7. <artifactId>dubbo-spring-boot-starter</artifactId>
  8. <version>3.3.0-beta.2</version>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.apache.dubbo</groupId>
  12. <artifactId>dubbo-registry-nacos</artifactId>
  13. <version>3.3.0-beta.2</version>
  14. </dependency>

2、创建公共模块comment-interface

可以理解为服务提供端和服务消费端的桥梁(服务端和消费端需要同时引入该模块),当消费端调用该接口时,通过注册中心在服务提供端就可以找到该接口的实现类,进而实现服务间通讯。

  1. public interface HelloWorldDemoApi {
  2. public String helloWorld(String string);
  3. }

3、服务提供者

(1)在pom中引入该模块

  1. <dependency>
  2. <groupId>com.example</groupId>
  3. <artifactId>common-interface</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>

(2)实现HelloWorldDemoApi接口,使用注解@DubboService注解标注为服务提供者

  1. @DubboService
  2. @Service
  3. @Slf4j
  4. public class DubboHelloWorldDemoApiImpl implements HelloWorldDemoApi {
  5. @Override
  6. public String helloWorld(String string){
  7. log.info(string);
  8. return string + " Hello World!";
  9. }
  10. }

 (3)在启动类上加上@EnableDubbo注解,启动Dubbo自动注册功能

  1. @SpringBootApplication
  2. @EnableDubbo
  3. public class CloudProviderApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(CloudProviderApplication.class, args);
  6. }
  7. }

(4)配置application.properties 

  1. spring.application.name=cloud-provider
  2. server.port=8081
  3. dubbo.registry.address=nacos://127.0.0.1:8848
  4. dubbo.registry.username=nacos
  5. dubbo.registry.password=nacos
  6. #是否启动 qos 默认 true
  7. # 能够列出来该实例服务提供者与调用者状态
  8. dubbo.application.qosEnable=true
  9. # 启动 qos 绑定的端口 默认 22222
  10. dubbo.application.qosPort=22222
  11. # 是否允许远程访问 默认是 false
  12. dubbo.application.qosAcceptForeignIp=false

4、服务消费方

(1)在pom中引入该模块

  1. <dependency>
  2. <groupId>com.example</groupId>
  3. <artifactId>common-interface</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>

(2)注入HelloWorldDemoApi服务,使用注解@DubboReference注解标注为服务调用方

  1. @RestController
  2. public class TestController{
  3. @DubboReference
  4. private HelloWorldDemoApi api;
  5. @GetMapping("/test")
  6. public String getResult(){
  7. return api.helloWorld("tom");
  8. }
  9. }

 (3)在启动类上加上@EnableDubbo注解,启动Dubbo自动注册功能

  1. @SpringBootApplication
  2. @EnableDubbo
  3. public class CloudConsumerApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(CloudConsumerApplication.class, args);
  6. }
  7. }

(4)配置application.properties  

  1. spring.application.name=cloud-consumer
  2. server.port=8082
  3. dubbo.registry.address=nacos://127.0.0.1:8848
  4. dubbo.registry.username=nacos
  5. dubbo.registry.password=nacos
  6. #是否启动 qos 默认 true
  7. # 能够列出来该实例服务提供者与调用者状态
  8. dubbo.application.qosEnable=true
  9. # 启动 qos 绑定的端口 默认 22222
  10. # 服务提供者已经把该端口占用了,那么服务消费者就不能使用该端口了,需要换一下
  11. dubbo.application.qosPort=33333
  12. # 是否允许远程访问 默认是 false
  13. dubbo.application.qosAcceptForeignIp=false

5、测试

启动提供端服务和消费端服务,在浏览器中输入http://127.0.0.1:8082/test

输出:

 Tom Hello World!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/774003
推荐阅读
相关标签
  

闽ICP备14008679号