事前准备
本文的目的是关于Dubbo 应用接入MSE注册配置中心。首先是工程准备,一般情况下是两个Spring Boot 应用和一个公共的接口模块。
模块说明:
- common-api ,公共接口模块(接口),供服务消费者和服务提供者调用。
- dubbo-provider服务提供者模块(接口实现类),依赖common-api模块。
- 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作为注册中心成功。