В настоящее время я сталкиваюсь с проблемой, когда Eureka не отменяет регистрацию зарегистрированного сервиса. Я вытащил пример сервера Eureka прямо из концентратора git и сделал только одно изменение, eureka.enableSelfPreservation = false
. Мое приложение application.yml выглядит следующим образом:
server:
port: 8761
eureka:
enableSelfPreservation: false
client:
registerWithEureka: false
fetchRegistry: false
server:
waitTimeInMsWhenSyncEmpty: 0
Я читал, что если 85% зарегистрированных сервисов прекратят доставку сердечных сокращений в течение 15 минут, Эврика предполагает, что проблема связана с сетью и не отменяет регистрацию служб, которые не отвечают. В моем случае у меня работает только одна служба, поэтому я отключил режим самосохранения. Я внезапно убиваю процесс, и Эврика покидает службу, зарегистрированную для того, что кажется неопределенным количеством времени.
Мой клиент application.yml выглядит следующим образом:
eureka:
instance:
leaseRenewalIntervalInSeconds: 3
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
appInfo:
replicate:
interval: 3
initial:
replicate:
time: 3
spring:
rabbitmq:
addresses: ${vcap.services.${PREFIX:}rabbitmq.credentials.uri:amqp://${RABBITMQ_HOST:localhost}:${RABBITMQ_PORT:5672}}
Моя цель - создать демоверсию, в которой Eureka быстро обнаруживает, что служба больше не работает, а другая запущенная служба может быстро зарегистрировать себя.
На данный момент, как только клиент eureka запущен, он регистрируется через 3 секунды. Он просто никогда не отменяет регистрацию, когда служба внезапно прекращается. После того, как я убью службу, приборная панель Eureka читает:
EMERGENCY! EUREKA МОЖЕТ БЫТЬ НЕПРАВИЛЬНЫМИ ПРЕТЕНЗИЯМИ, КОГДА ОНИ НЕ. ОБНОВЛЕНИЯ - МЕНЬШЕ, ЧЕМ ПОРОГ И НАСЛЕДИЕ ИНСТАНЦИИ НЕ ПРОДОЛЖАЮТСЯ ТОЛЬКО ДЛЯ БЕЗОПАСНОСТИ.
Как я могу предотвратить это поведение?