我有服务A,即使用服务B1和B2(两个相同服务的实例),都是通过Eureka配置的。
现在我想将B1 轻轻地放下(这样A在处理B1请求失败时没有问题/延迟)。我想有这样一个程序:
我遇到了第1步的问题。如何请求B1停止ping?看了一些JMX操作但没找到。
(如果我跳过第1步,只是从Eureka删除B1,它将从注册表中删除,但它会很快更新,因为B1仍在ping Eureka)
答案 0 :(得分:2)
如果您将cloud-starter
和actuator
依赖性添加到项目中
<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
提供)。 POST
至/pause
将在尤里卡获得DOWN
状态(感谢cloud-starter
)。当eureka客户端收到状态时,Ribbon不会将任何请求路由到您的DOWN
服务。发布到/shutdown
将优雅地停止申请。
答案 1 :(得分:0)
根据this github question,您最好添加重试,因为 DOWN 实例在删除之前会保留一段时间,否则可能会将失败的客户端请求路由到该实例
答案 2 :(得分:0)
在pom.xml中添加稳定发布版本并编译“范围” 喜欢
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.2.8.RELEASE</version>
<scope>compile</scope>
</dependency>