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

- 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中定义接口信息:

在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端口能够登录成功即可
修改yaml文件——
这里以provider的yaml配置为例,consumer的配置也类似
但是需要修改dubbo.protocol.port、server.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
可以去本地maven仓库看看是否上传成功
我的:
确定上传成功之后
从本地仓库导入
▼xml复制代码<dependency> <groupId>com.jerry</groupId> <artifactId>dubbo-contract</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
其他代码不变
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
