初探Nacos-- SpringBoot下整合Dubbo和Nacos
关于Nacos已经展开了两篇文章:
初探Nacos(二)-- SpringCloud使用Nacos的服务注册与发现
使用Dubbo的同学如果要切换Nacos也很容易,官方已有文档:Dubbo 融合 Nacos 成为注册中心,可直接测试其提供的例子:dubbo-registry-nacos,比较简单,就不再多说了,今天我们要尝试的是SpringBoot下整合Dubbo和Nacos。
首先,我们新建一个Module,命名为nacos-demo-api, 定义一个dubbo接口,用于测试参数的传递,以及List和Map的参数请求与返回。
1 public interface HelloProvider { 2 3 String hello(String name); 4 5 List<Map<String, String>> testMapList(Map<String, String> map); 6 7 }
第二步,我们在项目下建一个Dubbo服务提供者Module,命名为nacos-demo-dubbo-provider,在pom.xml添加依赖。
1 <dependency> 2 <groupId>xyz.aiding.demo</groupId> 3 <artifactId>nacos-demo-api</artifactId> 4 <version>${project.version}</version> 5 </dependency> 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-web</artifactId> 9 </dependency> 10 <dependency> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-actuator</artifactId> 13 </dependency> 14 <!-- Dubbo Nacos registry dependency --> 15 <dependency> 16 <groupId>com.alibaba</groupId> 17 <artifactId>dubbo-registry-nacos</artifactId> 18 <version>0.0.1</version> 19 </dependency> 20 <!-- Dubbo dependency --> 21 <dependency> 22 <groupId>com.alibaba</groupId> 23 <artifactId>dubbo</artifactId> 24 <version>2.6.5</version> 25 </dependency> 26 <!-- Alibaba Spring Context extension --> 27 <dependency> 28 <groupId>com.alibaba.spring</groupId> 29 <artifactId>spring-context-support</artifactId> 30 <version>1.0.2</version> 31 </dependency> 32 <dependency> 33 <groupId>com.alibaba.boot</groupId> 34 <artifactId>dubbo-spring-boot-starter</artifactId> 35 <version>0.2.1.RELEASE</version> 36 <exclusions> 37 <exclusion> 38 <groupId>com.alibaba</groupId> 39 <artifactId>dubbo</artifactId> 40 </exclusion> 41 </exclusions> 42 </dependency>
并在application.properties配置,将dubbo.registry.address配置到指定的Nacos注册中心。
server.port=18082
spring.profiles.active=dev
spring.application.name=nacos-demo-dubbo-provider
##dubbo config
dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.application.name=nacos-demo-dubbo-provider
dubbo.scan.basePackages=xyz.aiding.demo.dubbo.provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
第三步,编写SpringBoot启动类,此处不需要像上一章一样使用@EnableDiscoveryClient注解。
1 @SpringBootApplication 2 public class NacosDubboProviderApplication { 3 4 public static void main(String[] args) { 5 SpringApplication.run(NacosDubboProviderApplication.class, args); 6 } 7 8 }
并实现dubbo接口。
1 @Service 2 public class HelloProviderImpl implements HelloProvider { 3 4 @Value("${spring.profiles.active}") 5 private String env; 6 7 @Override 8 public String hello(String name) { 9 return "hello, " + name; 10 } 11 12 @Override 13 public List<Map<String, String>> testMapList(Map<String, String> map) { 14 List<Map<String, String>> list = new ArrayList<Map<String, String>>(); 15 list.add(map); 16 Map<String, String> map2 = new HashMap<String, String>(); 17 map2.put("env", env); 18 map2.put("testKey", "testValue"); 19 list.add(map2); 20 return list; 21 } 22 }
启动该Dubbo提供者服务,登陆Nacos控制台,可以看到服务已注册。
如图所示,服务名前缀为 providers: 的信息为服务提供者的元信息,consumers: 则代表服务消费者的元信息。点击“详情”可查看服务状态详情。
server.port=18083 spring.profiles.active=dev spring.application.name=nacos-demo-dubbo-consumer ##dubbo config dubbo.registry.address=nacos://127.0.0.1:8848 dubbo.application.name=nacos-demo-dubbo-consumer dubbo.scan.basePackages=xyz.aiding.demo.dubbo.provider dubbo.protocol.name=dubbo dubbo.protocol.port=-1
第五步,编写SpringBoot启动类,注意,此处需要加上注解@EnableDubbo。
1 @EnableDubbo 2 @SpringBootApplication 3 public class NacosDubboConsumerApplication { 4 5 public static void main(String[] args) { 6 SpringApplication.run(NacosDubboConsumerApplication.class, args); 7 } 8 9 }
1 @RestController 2 public class HelloController { 3 4 @Reference 5 HelloProvider helloProvider; 6 7 @GetMapping(value = "/api/hello") 8 @ResponseBody 9 public String index(@RequestParam("name") String name){ 10 return helloProvider.hello(name); 11 } 12 13 @GetMapping(value = "/api/testMapList") 14 @ResponseBody 15 public List<Map<String, String>> testMapList(){ 16 Map<String, String> map = new HashMap<String, String>(); 17 map.put("hello", "nacos-dubbo"); 18 return helloProvider.testMapList(map); 19 } 20 21 }
启动该Dubbo消费者服务,登陆Nacos控制台,可以看到服务已注册。
点击“详情”可查看服务详情。
打开浏览器,访问http://127.0.0.1:18083/api/hello?name=abc
访问http://127.0.0.1:18083/api/testMapList
就是这么简单,SpringBoot下整合Dubbo和Nacos到此结束,下一章我们开始尝试Nacos作为配置中心的使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2016-10-21 Linux获取当前时间
2016-10-21 linux几种定时函数的使用
2016-10-21 MySQL server has gone away 问题的解决方法