目前,我正在使用Discovery First运行Spring Boot Services。一个接一个地启动服务工作得很好,但我在通过docker-compose一次性启动所有服务时遇到了问题。
discovery first bootstrap似乎没有像我预期的那样工作。我假设服务将暂停/重试,直到他从配置服务收到配置,这是通过eureka发现的。但目前它将尝试解析配置一次,然后服务将立即启动-无论是否已带来配置。
服务引导程序如下所示:
spring:
application:
name: my-service
cloud:
config:
fail-fast: false
discovery:
enabled: true
service-id: configserver
retry:
initialInterval: 2000
multiplier: 1.5
maxInterval: 60000
maxAttempts: 10
server:
port: ${APPLICATION_PORT:16000}
eureka:
client:
serviceUrl:
defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/eureka配置如下所示:
spring:
application:
name: manager
server:
port: 15000
eureka:
client:
registerWithEureka: true
fetchRegistry: false
serviceUrl:
defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/最后但并非最不重要- configserver配置如下所示:
spring:
application:
name: configserver
cloud:
config:
fail-fast: true
server:
port: 15001
eureka:
client:
serviceUrl:
defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/这里有人能给点建议吗?
发布于 2019-02-13 22:43:12
我找到了问题所在:
实际上,我发现我们这边有两个问题。第一个没有合适的租约续订间隔。客户端刚刚重试接收缓存服务的配置。由于缓存的服务不包含配置服务,因此他无法接收到正确的配置。
第二个问题是没有等待足够的时间。在提高maxAttempts时已修复此问题。因此,配置和发现服务确实有足够的时间来启动。
客户端配置现在如下所示:
spring:
application:
name: service
cloud:
config:
fail-fast: true
discovery:
enabled: true
service-id: CONFIGSERVER
retry:
initialInterval: 2000
multiplier: 1.5
maxInterval: 60000
maxAttempts: 100
server:
port: ${APPLICATION_PORT:16000}
eureka:
instance:
lease-renewal-interval-in-seconds: 10
client:
fetch-registry: true
serviceUrl:
defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/https://stackoverflow.com/questions/54670804
复制相似问题