炫意html5
最早CSS3和HTML5移动技术网站之一

s.c.bus执行/busrefresh失败

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 ?

回答

添加下面的依赖:
<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获取配置成功;

炫意HTML5 » s.c.bus执行/busrefresh失败

Java基础教程Android基础教程