2015-10-20 47 views
3

我有服務A,即使用服務B1和B2(兩個相同服務實例),所有服務均通過Eureka配置。Spring Eureka:輕輕關閉服務

現在我想B1 緩慢下來(以便A沒有處理失敗的B1請求的問題/延遲)。我想有這樣一個過程:

  1. 泰爾B1停止ping尤里卡
  2. 讓尤里卡流傳着一句話,即B1正在下降
  3. 等到獲取信息,並沒有使用B1再
  4. 然後關機B1

我有步驟1.如何申請B1停止ping的問題嗎?查找了一些JMX操作但未找到。

(如果我跳過第1步,並只刪除尤里卡B1,它是從註冊表中刪除,但它會很快續約,因爲B1是仍然可以ping通尤里卡)

回答

2

如果添加cloud-starteractuator 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)。當尤里卡客戶收到狀態時,Ribbon不會將任何請求發送至您的DOWN服務。發佈到/shutdown將優雅地停止應用程序。

+0

謝謝,我已檢查過它(在非常簡單的應用程序),它看起來像它正在工作(仍服務的請求)。有一個問題需要確認:暫停後的日誌中有一個條目:「DefaultLifecycleProcessor:停止階段0中的bean」。這是什麼意思?無論如何暫停影響應用程序行爲? – Tomasz

+0

您是否能夠正常工作? –