本文介绍如何将任务调度应用优雅下线。
背景信息
在实际业务场景下,定时任务持续地按固定频率在应用进程中执行。当应用在发布重启时,进程需暂时下线。如果直接关闭应用,正在进行中的定时任务将被中断,可能导致数据不完整或其他问题。为避免该情况,SchedulerX实现了定时任务的优雅下线功能,在关闭应用前,需等待当前正在进行的任务执行完成后,然后再安全地关闭应用。
使用限制
客户端版本≥1.10.8。
如何配置
离线定时任务不同于实时在线业务场景,可能存在执行长耗时的特性,但是应用进程在停机时不会无限等待。您可以通过以下配置设置存在运行中的任务的应用延迟停机的时间。
# 优雅下线模式,WAIT_ALL:等待全部; WAIT_RUNNING:等待运行中。
# 该参数不配置则不启用优雅下线功能(默认不开启优雅下线)。
spring.schedulerx2.graceShutdownMode=WAIT_ALL
# 优雅下线等待超时时长(单位:秒),默认无超时。
spring.schedulerx2.graceShutdownTimeout=10
下线模式 | 描述 |
等待全部( | 该模式下,待所有已接收的任务和子任务执行完成后,应用才退出。(推荐) |
等待运行中( | 该模式下,应用在退出时,将等待已分配线程并在处理中的任务或子任务执行完成,队列中的任务将被放弃执行。 |
重要
执行下线脚本停止业务应用时,不能直接采用kill -9
,否则该能力将失效。部分业务应用下线的脚本先采用kill -15
,监测并等待一段时间后,再执行kill -9
命令强制停止。建议根据应用任务的特征合理设置下线等待的时间,防止发布过程过慢。
文档内容是否对您有帮助?