Eureka上的服务是通过心跳检测注册到上面,如果stop或者直接kill掉服务的话,Eureka并不能实时的检测到服务下线,并且如果直接kill还可能杀掉正在处理业务的服务,所以我们要找到一个方法安全下线服务。
一:发送DELETE请求删除服务
http:// ip:port/eureka/v2/apps/appID/instanceID
这样能请求eureka删除实例,不过由于心跳机智,实例过一会就会注册上去
二:修改实例状态为OUT_OF_SERVICE
修改状态后,此实例会处理完当前正在处理的请求,之后就不再接受新的请求。
三:Spring Boot Actuato
1.引入pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.参数配置
#启用shutdown
endpoints.shutdown.enabled=true
#禁用密码验证(正式环境应该要有安全策略)
endpoints.shutdown.sensitive=false
3.请求停止服务(经过测试,服务会在处理完请求之后关闭,但是eureka上的实例并没有删除)
参考资料:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations