定时任务的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011955252/article/details/83994126

背景:一说到定时任务,就是在指定的时间触发。目前可以使用quartz来实现,如果项目使用spring,也可以使用spring的集成定时任务。如果你的项目就一台服务器,那没问题,如果是多个应用服务端,那定时任务在每个机器都会执行。因此在分布式情况下,触发一个定时任务,多个机器可以并发的执行任务,完成一个任务。 可以考虑使用 数据分割,数据捞取,任务执行的思想,充分利用集群的资源去执行。

如果一个系统有5中不同的业务定时任务,是不是可以考虑使用一个定时任务,统一管理所有的业务任务

因此:可以创建一个数据表,就表示任务表,任务Id,任务类型,任务优先级,业务ID,业务类型、业务结果、业务申请执行时间,业务最近一次执行开始时间,业务最近一次执行结束时间,任务最大执行数、任务已经执行次数,等一些属性。专门用于管理任务。

这个任务表可以提供一个服务,Service。包括创建任务、开始执行任务,结束任务

在提供管理任务的类,Manager,包括触发任务

最终的效果就是,在业务代码中,比如A系统调用B系统失败,然后调用Service落数据库任务,然后定时任务到时间了,触发定时任务,调用Manager触发定时任务,Manger这针对不同的因为业务任务可以统一的处理,同时调用Service 进行任务的管理。不同业务的处理,可以使用线程池来执行,由于不同业务的不同,可以考虑使用多个线程池,针对不同的业务。注意如果多个业务使用同一个线程池,可能出现死锁的情况,因此使用线程池要慎重。

猜你喜欢

转载自blog.csdn.net/u011955252/article/details/83994126