版本:
nacos:2.2.0
springboot:2.6.13
openfeign:3.1.6
只使用
nacos-config-spring-boot-starter
nacos-discovery-spring-boot-starter
不行,会找不到服务
报错内容如下:
No servers available for service: XXX
还有一个WARN信息:
org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer报出如下:
No servers available for service:
查了很久,找一堆资料,
如 : https://blog.csdn.net/FansUnion/article/details/90635479
结果都不是我遇到的问题,后来发现,我在系统中只引入了:
nacos-config-spring-boot-starter
nacos-discovery-spring-boot-starter
以上包无法与openfeign及LoadBalancer 一起工作;
换成下如下包就好了:
nacosCloudVersion:'2021.0.5.0'
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:$nacosCloudVersion")
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:$nacosCloudVersion")
//nacos starter
// implementation("com.alibaba.boot:nacos-config-spring-boot-starter:$nacosBootVersion")
// implementation("com.alibaba.boot:nacos-discovery-spring-boot-starter:$nacosBootVersion")
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:$nacosCloudVersion")
implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:$nacosCloudVersion")
引入的spring相关的如下图所示:
springCloudVersion = '3.1.5'
原配置application.yml要换成bootstrap.yml
nacos的配置在cloud包下与spring-boot不一样,需要调整:
参考内容如下:
spring:
cloud:
nacos:
config:
server-addr: http://192.168.1.215:8848
refresh-enabled: false
encode: utf8
fileExtension: yml
namespace: template-java
extension-configs:
- data-id: app.yml
group: dev
- data-id: redis.yml
group: dev
discovery:
server-addr: http://192.168.1.215:8848
namespace: template-java
group: dev
另外,如下图所示,若nacos控制台订阅者中应用名显示unknown,
需要在程序启动函数里面设置如下的参数即可: