2015-10-20 2 views
3

У меня есть служба A, которая использует сервисы B1 и B2 (два экземпляра одного и того же сервиса), все настроенные через Eureka.Весна Эврика: аккуратно выключите услугу

Теперь я хотел бы взять B1 нежно вниз (так что у A нет проблем/задержек с обработкой сбоев запросов B1). Я хотел бы иметь такую ​​процедуру, что:

  1. СКАЖИТЕ B1 остановить пинг Эврика
  2. Сделать Eureka распространить слово, что B1 идет вниз
  3. Подождите, пока не получает информацию и не использовать B1 больше
  4. Тогда выключение B1

у меня есть проблема с шагом 1. Как я могу запросить B1 остановить пинг? Посмотрел на некоторые операции JMX, но не нашел.

(Если я пропустил шаг 1, и только УДАЛИТЬ B1 от Eureka, он удаляется из реестра, но он будет быстро обновляется, поскольку B1 еще пинг Eureka)

ответ

2

Если добавить cloud-starter и actuator depencency ваш проект

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 

вы будете иметь ряд управляющих конечных точек (предоставляется actuator). A POST до /pause приведет к состоянию DOWN в эврика (благодаря cloud-starter). Когда клиенты eureka получат статус, лента не направит никакого запроса на ваш сервис DOWN. Проводка до /shutdown изящно остановит приложение.

+0

спасибо, я проверил его (на очень простое приложение), и похоже, что он работает (все еще обслуживает запросы). Один вопрос вы, чтобы быть уверенным: в журналах после паузы есть запись: «DefaultLifecycleProcessor: остановка bean-фаз в фазе 0». Что это значит? Влияет ли пауза на поведение приложения? – Tomasz

+0

Вы могли бы получить эту работу? –

Смежные вопросы