quartz集群任务重复执行解决思路

  |   0 评论   |   0 浏览

quartz在集群的时候,任务会出现重复执行的情况,虽然quartz配置了集群,但还是会出现重复执行的情况,想了几个解决方案:

1、如果可以,就把集群中的定时任务拆解出来,单独进行部署,只存在单机服务。

2、如果单服务定时任务没办法快速处理业务,必须要集群,那么可以在业务表中加个处理状态,来判断是否处理过,如是否推送、是否关闭等等,在处理的时候进行字段判断,如果已经处理过了,就不再进行处理。因为大部分时候,集群定时任务一般都是并发执行的,可以通过分布式锁来控制,如redis和zookeeper的分布式锁。也可以通过乐观锁来处理。建议使用这个。

3、可以使用悲观锁,在select后面加上for update,这样这条数据只被当前定时任务获取到,这个方案的缺点是:这条数据被锁住了,在定时任务没有执行完之前,其他应用都没办法获取到这条数据,降低了吞吐量。不建议使用

源码地址

也可以关注我的公众号,及时获取最新文章

关注公众号,回复:下载
获取百度下载神器:
imagepng

本文为博主原创文章,未经博主允许不得转载。