一、nacos部署
参考文章nacos注册中心搭建
二、使用nacos作为dubbo注册中心
1、创建dubbo-service-api工程
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacos</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-service-api</artifactId>
</project>
定义接口
package com.dubbo.service;
public interface UserService {
String getUser();
}
2、创建dubbo-service工程
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacos</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-service</artifactId>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>dubbo-service-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
</dependencies>
</project>
编写接口实现类,这里使用了dubbo注解org.apache.dubbo.config.annotation.Service
package com.dubbo.service;
import org.apache.dubbo.config.annotation.Service;
@Service
public class UserServiceImpl implements UserService{
public String getUser() {
return "我是dubbo服务接口";
}
}
编写bootstrap.yml文件
server:
port: 8093
spring:
application:
name: dubbo-service
cloud:
nacos:
discovery:
server-addr: 192.168.25.129:8848
namespace: b88583d9-0d66-49e8-a4b8-6716cc6fdda7
cluster-name: DEFAULT
group: test1
config:
server-addr: 192.168.25.129:8848
namespace: b88583d9-0d66-49e8-a4b8-6716cc6fdda7
cluster-name: DEFAULT
group: test1
file-extension: yaml
dubbo:
scan:
base-packages: com.dubbo.service #扫描的服务接口包路径
protocol:
name: dubbo #dubbo协议
port: ${dubbo_port:20881} #dubbo协议
registry:
address: nacos://192.168.25.129:8848 #nacos注册中心地址
application:
qos-enable: false #dubbo运维服务是否开启
consumer:
check: false #启动时就否检查依赖的服务
编写启动类,这里使用springcloud原生注解@EnableDiscoveryClient开启服务发现
@SpringBootApplication
@EnableDiscoveryClient
public class DubboServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DubboServiceApplication.class, args);
}
}
启动服务,发现已经注册到了nacos上了
3、创建dubbo-consumer工程
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacos</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-consumer</artifactId>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>dubbo-service-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
调用服务接口,这里使用dubbo注解org.apache.dubbo.config.annotation.Reference 调用远程服务接口。
@RestController
public class UserController {
@Reference
private UserService userService;
@RequestMapping("getUser")
public String getUser() {
return userService.getUser();
}
}
编写bootstrap.yml文件
server:
port: 8094
spring:
application:
name: dubbo-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.25.129:8848
namespace: b88583d9-0d66-49e8-a4b8-6716cc6fdda7
cluster-name: DEFAULT
group: test1
config:
server-addr: 192.168.25.129:8848
namespace: b88583d9-0d66-49e8-a4b8-6716cc6fdda7
cluster-name: DEFAULT
group: test1
file-extension: yaml
dubbo:
registry:
address: nacos://192.168.25.129:8848 #nacos注册中心地址
编写启动类
@SpringBootApplication
@EnableDiscoveryClient
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
启动服务,并执行dubbo-consumer接口,发现返回成功