0

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

我之前一直在使用 Quartz 库来定期运行任务。然而,为了简单起见,我喜欢让一个 Quartz 线程处理所有报告的想法。也就是说,线程应该循环遍历所有报告,比如每 15 分钟一次,并确定是否是生成和发送一个或多个报告的时间。无论是在 12:00 还是 12:15 生成报告都没有关系。

我正在考虑是否有可能以某种方式为每个报告设置特定时间,例如“mon@12:00,wed@12:00”或“fri@09:30”。然后,基于此,线程将确定是否该发送报告。

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

4

2 回答 2

1

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

于 2011-09-09T10:25:13.527 回答
1

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

如果一项工作需要太多时间才能完成并且您开始累积工作,则会导致问题。

作业调度数据结构将保持其记录按时间戳排序。

于 2011-09-09T10:59:36.213 回答