0

我们有一个 wcf 服务(托管在 Windows 服务中),它执行一些可能需要几分钟才能完成的处理(1 到 5 分钟或有时更长时间)我们需要定期(每 2 分钟)轮询数据库以获取要处理的项目并为每个项目调用此服务。我正在考虑在这个用例中使用 Quartz.Net。

创建一个每 2 分钟运行一次的石英作业,并从数据库中获取要处理的项目。对于每条记录,创建一个作业并安排该作业立即执行。我们希望限制并发处理的最大数量(例如,最多 100 个)以避免内存问题。为此,其中一种选择是从 DB 中获取尽可能多的记录,即如果当前正在执行 60 个作业,我们只需要从 DB 中获取 40 条记录。这要求我们在从 DB 获取项目之前知道当前正在执行多少作业。

当第一个作业触发以从数据库获取记录时,是否有可能知道当前正在执行多少个进程?有一种方法IScheduler.GetCurrentlyExecutingJobs我认为可用于获取活动作业的计数。处理服务是一种单向方法,Quartz 如何知道处理是否仍然处于活动状态或已完成?

4

0 回答 0