В настоящее время я столкнулся с проблемой, при которой Eureka не отменяет регистрацию зарегистрированной службы. Я взял пример сервера Eureka прямо из git hub и внес только одно изменение, eureka.enableSelfPreservation = false
. Мой application.yml выглядит так:
server:
port: 8761
eureka:
enableSelfPreservation: false
client:
registerWithEureka: false
fetchRegistry: false
server:
waitTimeInMsWhenSyncEmpty: 0
Я читал, что если 85% зарегистрированных служб перестают доставлять биения в течение 15 минут, Eureka предполагает, что проблема связана с сетью, и не отменяет регистрацию служб, которые не отвечают. В моем случае у меня работает только одна служба, поэтому я отключил режим самосохранения. Я резко прекращаю процесс, и Эврика оставляет сервис зарегистрированным на неопределенное время.
Мой клиент 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 появится следующее сообщение:
СКОРАЯ МЕДИЦИНСКАЯ ПОМОЩЬ! EUREKA МОЖЕТ БЫТЬ НЕПРАВИЛЬНО ПРЕТЕНЗИВАЕТСЯ ОБ ИСПОЛЬЗОВАНИИ ЭКЗАМЕНОВ, КОГДА ИХ НЕТ. ПРОДОЛЖЕНИЕ ПРОДОЛЖАЕТСЯ МЕНЬШЕ, ЧЕМ ПОРОГ, И ПОЭТОМУ ЭКЗЕМПЛЯРЫ НЕ ПРОДОЛЖАЮТСЯ ТОЛЬКО ДЛЯ БЕЗОПАСНОСТИ.
Как я могу предотвратить такое поведение?