2015-10-20 63 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

您是否能够正常工作? –