首页 新闻 会员 周边

s.c.bus执行/busrefresh失败

0
悬赏园豆:10 [已解决问题] 解决于 2021-09-14 08:51

spring boot 2.5.2、spring cloud 2020.0.3

在 客户端服务 调用 /actuator/busrefresh 时,执行失败,从配置中心获取配置失败。
此时,配置中心CONFIGSERVER 已经注册到了注册中心。

日志显示,执行 上面的URL时,现实下面的信息:
o.s.b.context.config.ConfigDataLoader : Fetching config from server at : http://CONFIGSERVER
o.s.b.context.config.ConfigDataLoader : Connect Timeout Exception on Url - http://CONFIGSERVER. Will be trying the next url if available

检查启动时的日志,在从配置中心 获取配置时,有下面的日志:
o.s.b.context.config.ConfigDataLoader : Fetching config from server at : http://192.168.184.197:10000/

显示已经将 CONFIGSERVER 转换为 IP:PORT 的方式了。

问题是:
为何后来执行 /actuator/busrefresh 却没有如 启动时 这么做呢?奇怪

问题发生时的配置:
spring.config.import=optional:configserver:http://CONFIGSERVER

更改为下面的配置——直接指向 配置中心——时,执行 busrefresh 是成功的:
spring.config.import=optional:configserver:http://localhost:10000/

错误日志在 ConfigServerConfigDataLoader 类 的 getRemoteEnvironment 函数里面,调试发现,函数里面 resource.getProperties() 获取的 properties 里面的 uri不同:
启动是是 [http://192.168.111.197:10000/],而启动后 执行 /busrefresh 时是 [http://CONFIGSERVER]。

现在没有思路了,要怎么解决呢?难道是 Eureka客户端 的错误——没有把 CONFIGSERVER 解析为 某一个 配置中心的 IP:PORT ?

快乐的凡人721的主页 快乐的凡人721 | 老鸟四级 | 园豆:3920
提问于:2021-08-19 16:38
< >
分享
最佳答案
0

添加下面的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>


使用 bootstrap.properties:
spring.application.name=web3-client

eureka client

eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.lease-expiration-duration-in-seconds=30
eureka.instance.prefer-ip-address=true

eureka.client.service-url.defaultZone=http://localhost:8771/eureka/,http://localhost:8772/eureka/,http://localhost:8773/eureka/

eureka.client.fetch-registry=true
eureka.client.enabled=true
eureka.client.refresh.enable=false
eureka.client.registry-fetch-interval-seconds=10

spring.cloud.config.name=web3-client
spring.cloud.config.profile=dev

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=CONFIGSERVER

spring.config.import=optional:configserver:

spring.cloud.refresh.enabled=true

spring.cloud.refresh.never-refreshable=ConfigDataLocationResolver,ConfigDataLoader,ConfigServerConfigDataResource,ConfigServerConfigDataResource

spring.cloud.config.uri=http://CONFIGSERVER

spring.cloud.config.fail-fast=true

spring.cloud.config.retry.initial-interval=2000

spring.cloud.config.retry.max-interval=4000

spring.cloud.config.retry.max-attempts=6

spring.cloud.config.retry.multiplier=1.1


去掉 application.properties 、 bootstrap.properties 中的配置:
spring.config.import


结果:
启动获取配置成功;
执行/actuator/refresh获取配置成功;
执行/actuator/busrefresh获取配置成功;

快乐的凡人721 | 老鸟四级 |园豆:3920 | 2021-09-14 05:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册