一种根据给定计划运行任务的方法

时间:2011-09-09 10:15:40

标签: java quartz-scheduler job-scheduling

我即将创建一个小应用程序,负责向各种用户发送各种报告。我们可能会谈论50或100个不同的报告给不同的人。有些报告需要每天生成,有些报告每周生成,有些报告每月生成一些报告。

我之前一直在使用Quartz库来定期运行任务。但是,为了保持简单,我喜欢用一个Quartz线程处理所有报告的想法。也就是说,线程应循环遍历所有报告,例如每15分钟一次,并确定是否需要生成和发送一个或多个报告。如果在12:00或12:15生成报告并不重要。

我在考虑是否可能,不知何故,每个报告都可以设置特定的时间,例如“mon @ 12:00,wed @ 12:00”或“fri @ 09:30”。然后,基于此,线程将确定是否是发送报告的时间。

我的问题是;有没有其他人做过类似的事情,是否存在任何可以轻松实现此任务的库?

2 个答案:

答案 0 :(得分:1)

为什么不简单地为每个报告注册一个单独的石英任务实例,让Quartz为您处理所有的调度?这是它背后的重点。

答案 1 :(得分:1)

您可以创建单个线程,它会在某个时间间隔ping“作业调度数据结构”,以查看是否需要运行报告。如果是,它将运行报告,否则,它将进行短暂的小睡并在指定的睡眠时间后再次ping。

如果一个作业花费太多时间来完成并开始累积作业,则会导致问题。

作业计划数据结构将按时间戳记记录其记录。