事前准备
本文的目的是关于Dubbo 应用接入MSE注册配置中心。首先是工程准备,一般情况下是两个Spring Boot 应用和一个公共的接口模块 。
模块说明:
(1) common-api ,公共接口模块(接口),供服务消费者和服务提供者调用。
(2) dubbo-provider服务提供者模块(接口实现类),依赖common-api模块
(3) dubbo-consumer服务消费者模块(controller),依赖common-apii模块
消费者和提供者通过公共接口模块进行rpc远程调用。
Dubbo主要相关的依赖项和版本如下所示:
<!--dubbo相关--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.15</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>2.7.15</version> </dependency> |
在接入之前需要有一个MSE Nacos实例,并获得期访问信息。
公共模块
公共接口模块里面只有一个接口,没有配置文件,打jar包
public interface InfoService{ String getInfo(); } |
Provider模块
application.yml配置文件
server: port: 22020 spring: application: name: dubbo-provider dubbo: registry: address: nacos://访问地址?username=nacos&password=密码 application: name: dubbo-provider protocol: name: dubbo port: PORT scan: base-packages: com.ctg.mse.dubbo.pro.service provider: timeout: 30000 |
接口实现类,该类实现了公共接口模块创建的接口.注意包路径必须包含在配置文件的sacn.base-package路径中。
package com.ctg.mse.dubbo.pro.service; import com.ctg.mse.common.InfoService; import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Component; @Component @DubboService public class InfoServiceImpl implements InfoService { @Override public String getInfo() { return "Hello , dubbo provider method!"; } } |
Provider启动类
@EnableDubbo @SpringBootApplication public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } } |
Consumer模块
application.yml配置文件:
server: port: 21060 spring: application: name: dubbo-consumer dubbo: registry: address: nacos://Nacos访问地址?username=用户名&password=密码 application: name: dubbo-consumer consumer: timeout: 30000 |
controller,调用公共接口模块创建的接口
@RestController public class InfoController { @DubboReference(check = false) private InfoService infoService; @GetMapping("/getInfo") public String getInfo() { return infoService.getInfo(); } } |
Consumer启动类
@EnableDubbo @SpringBootApplication public class DubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(DubboConsumerApplication.class, args); } } |
服务调用测试
打MSE 开Nacos控制台页面查看注册中心中的服务,查看服务注册情况。
启动服务提供者和服务消费者,调用服务消费者的getInfo接口,服务提供者会返回结果。
至此,dubbo融合MSE Nacos作为注册中心成功。