SpringBoot整合Dubbo(Nacos注册中心)

SpringBoot项目整合Dubbo(Nacos作注册中心)

项目目录:

image.png

  • contract——约定的接口类
  • provider——接口提供方
  • consumer——接口调用方

需要引入的依赖——>在consumer和provider中引入即可:

xml
复制代码
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-nacos-spring-boot-starter</artifactId> </dependency>

在contract中定义接口信息:

image.png

在provider中定义接口实现类:

java
复制代码
package com.jerry.dubboprovider.Service; import com.jerry.Service.DemoService; import org.apache.dubbo.config.annotation.DubboService; @DubboService public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return name+",Hello Dubbo"; } }

注意使用Dubbo的注解@DubboService provider,consumer的启动类:使用Dubbo的注解@EnableDubbo,如下

java
复制代码
package com.jerry.dubboprovider; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo @SpringBootApplication public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } }

在consumer中需要引入的地方使用

text
复制代码
@DubboReference private DemoService demoService;

配置注册中心

因为本质上是consumer去调用provider内部的方法,那么如何在不直接引入provider的情况下,能使用他内部的方法呢? 我们就需要把provider提供的方法注册到注册中心,然后consumer去注册中心拉取 这里我直接使用Docker拉取nacos镜像,并且运行容器,在本地8848端口能够登录成功即可

image.png 修改yaml文件—— 这里以provider的yaml配置为例,consumer的配置也类似 但是需要修改dubbo.protocol.portserver.port两个属性(避免端口冲突)

yaml
复制代码
# 以下配置指定了应用的名称、使用的协议(Dubbo)、注册中心的类型(Nacos)和地址 dubbo: application: # 设置应用的名称 name: dubbo-springboot-demo-provider # 指定使用 Dubbo 协议,且端口设置为 -1,表示随机分配可用端口 protocol: name: dubbo port: 22220 registry: # 配置注册中心为 Nacos,使用的地址是 nacos://localhost:8848 id: nacos-registry address: nacos://localhost:8848 server: port: 8081

就可以正常调用demoService内部的方法了

不同项目引入dubbo

其他步骤不变,只需要单独定义一个contract(接口)项目,并发布到本地(或线上)maven仓库中 在项目中引入contract即可,这里以maven为例,gradle同理 依次执行clean、package、install image.png 可以去本地maven仓库看看是否上传成功 我的:

image.png 确定上传成功之后 从本地仓库导入

xml
复制代码
<dependency> <groupId>com.jerry</groupId> <artifactId>dubbo-contract</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>

其他代码不变

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP