spring cloud 优雅停机
spring cloud 优雅停机
大部分部署项目如果要停掉项目一般都是用kill -9 来杀进程
但是由于Eureka采用心跳的机制来上下线服务,会导致服务消费者调用已经kill的服务提供者然后出错。
可以采用以下方式来解决:
核心是先调用方法主动通知Eureka注册中心服务下线,然后再停掉服务。
1.向Eureka注册中心发送delete请求
/eureka/apps/{application.name}/{instanceId}
服务器执行命令如下 curl -u winfo:winfo -v -w %{http_code} -X DELETE http://ip:port/eureka/apps/{application.name}/instanceId/
这样就可以想执行上面的命令,然后再用kil -9 杀掉本地服务了
2.kill -15 优雅停机
Spring Cloud默认的EurekaClientAutoConfiguration这个自动配置类已经为我们做好了相应的工作。
在程序收到kill信号时,JVM会调用 shutdown hook, 在此hook中就有取消注册的逻辑。