springboot整合nacos集群
因为我的springboot项目是多个微服务统一调用一个nacos集群的作为配置和服务中心的。所以在微服务中统一配置nacos的配置,然后各个微服务分别调用,实现一次配置,多位置生效。
·
因为我的springboot项目是多个微服务统一调用一个nacos集群的作为配置和服务中心的。所以在微服务中统一配置nacos的配置,然后各个微服务分别调用,实现一次配置,多位置生效。
添加依赖
因为我的nacos版本选择的是nacos2.1.2的版本,所以这里的nacos相关依赖需要设置版本为2021.1。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--alibaba nacos discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<!--alibaba nacos config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
<!-- nacos2.0之后不自动找bootstrap.yaml,需要添加依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.3</version>
</dependency>
设置nacos信息
首先我们先搭建一个[nacos集群],然后在项目的公共路径下common/bootstrap.yaml文件,配置如下nacos信息。
nacos:
url: $ip:8811,$ip:8822,$ip:8833
group: alex-miaosha
namaspace: 033377eb-973b-4dac-a0e9-e99c87325009
username: nacos
password: nacos
file-extension: yaml
knife4j: knife4j
admin: springbootadmin
nacos: nacos-service
redis: redis
微服务中配置nacos
在微服务resources中创建bootstrap.yaml文件,然后添加如下nacos配置信息。extension-configs中按需配置微服务项目中需要的额外配置。
spring:
cloud:
nacos:
server-addr: ${nacos.url}
config:
server-addr: ${nacos.url}
file-extension: ${nacos.file-extension}
group: ${nacos.group}
namespace: ${nacos.namaspace}
extension-configs:
- data-id: ${nacos.nacos}.${nacos.file-extension}
group: ${nacos.group}
refresh: true
- data-id: ${nacos.admin}.${nacos.file-extension}
group: ${nacos.group}
refresh: true
在nacos配置中添加nacos-service.yaml文件,然后添加如下服务发现信息:
spring:
cloud:
nacos:
discovery:
server-addr: ${nacos.url}
group: ${nacos.group}
namespace: ${nacos.namaspace}
username: ${nacos.username}
password: ${nacos.password}
@SpringBootApplication
@EnableDiscoveryClient
public class MonitorApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(MonitorApplication.class)
.properties("spring.config.additional-location:file:./common/bootstrap.yaml")
.build().run(args);
}
}
Q&A
当出现如下错误时,需要验证一下nacos的依赖的版本与我们安装的nacos的脚本是否一致。
Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:651) ~[nacos-client-2.1.0.jar:na]
at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:631) ~[nacos-client-2.1.0.jar:na]
at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:278) ~[nacos-client-2.1.0.jar:na]
... 31 common frames omitted
更多推荐
已为社区贡献1条内容
所有评论(0)