Java应用优雅启停执行步骤实践

停止应用


1 Web应用将HTTP流量切走

如果是Web应用,需要先借助工具或者命令,将登记在Nginx中的转发信息临时移除,确保不再有新的流量来访问将要停止的应用。

2 触发停止应用的通知

2.1 方式1-执行kill -2

发送进程停止信号,Java应用中通过Runtime.getRuntime().addShutdownHook注册回调,用于运行在进程退出前需要执行的逻辑。由于addShutdownHook可以注册多个回调,调用顺序并不明确,所以不是最佳方案,仅供参考。

2.2 方式2-通过访问指定url触发停止应用的操作

将应用改造为SpringBoot方式的应用,内置启动触发shutdown的EndPoint,其实就是提供一个指定的url,通过curl命令访问该url,然后在代码中运行在进程退出之前需要执行的逻辑。不是SpringBoot方式,只要是Web应用都可以这样做,注意这个url应该限制允许本地127.0.0.1的ip访问,且需要加上账号密码的鉴权限制,建议也限制仅允许POST方式访问。

举个例子,执行停止进程之前操作

output=$(curl -vvv -u ${USER}:${PASS} -X POST http://127.0.0.1:${SYS_PORT}${CONTEXT_PATH}/actuator/shutdown
echo "response is ${output}"

3 收到停止应用的通知后,应用内执行如下流程

3.1 关闭Spring Context之前,优先执行的操作

3.1.1 调用中间件停止监听的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值