关于如何优雅的停止任务

查看 105|回复 7
作者:codermax   
第一次发帖还是提问贴,如有不妥还请诸多包涵,多多谅解。
目前有个接口任务,这个任务链比较长,里面包含了对外部系统的调用,异步查询外部任务的执行结果,文件上传,数据获取等,就是比较复杂,但是整个任务链属于一个任务,在数据库中有个对应的任务表维护任务的状态(运行中、超时、结束等)
目前的需求是想通过另一个接口对上面这个任务进行操作,需要在任意时刻停止该任务,然后更新表中的任务时刻状态。然后反馈给前端。
目前我的想法是在 redis 或者其他地方写入一个标识,在不同的耗时子任务后根据这个标识来停止任务,但是这么写比较繁杂,而且后续维护肯定也不太好,另一个想法(也是我请教另一个哥们的)是所有子任务维护到一个 map 中,做统一的判断启停,但是任务状态维护可能是个问题。
所以想问问各位大佬们,有没有别的比较优雅的方法,不胜感激!!!

任务, 停止, 维护, 表维护

yazinnnn   
https://www.reactive-streams.org/
随便找个 reactive streams 的实现, 比如 reactor 或者 rxjava, 把你的异步任务拆碎
codermax
OP
  
@yazinnnn 感谢回复,大概看了下,感觉改造成本比较大,还要引入别的依赖。
sumarker   
执行中的任务要立刻停止的话,肯定是直接杀进程最快吧
如果要等,那就维护一个队列,控制进入的入口,如果要停就 关闭入口,等队列都跑完了,再关进程
hangszhang   
任务进程化,然后管理进程
hangszhang   
比如用 java -jar 起一个进程,拿到这个进程的 pid ,终止的方式就是 kill 进程
wushigejiajia01   
插眼学习下
rekulas   
就加标识不就最简单有效的,为什么会觉得开发维护麻烦
您需要登录后才可以回帖 登录 | 立即注册

返回顶部