Spring 调度 Quartz 和数千个作业

Spring Scheduling Quartz and thousands of jobs

根据我的 Spring Boot application with Quartz Scheduling and MongoDB as Job persistent storage 的业务逻辑,系统的每个用户都可以创建必须在某个时刻执行的延迟作业及时。用户选择必须执行的时间。

现在我正在考虑每个用户为每个推迟的工作创建一个专用 JobDetail 的方法,就像这样:

schedulerFactoryBean.getScheduler().addJob(jobDetail(), true, true);

我在这里可能看到的问题是,通过这种方法,我可以在 Quartz 调度程序中快速创建数千个作业。以前我从未在 Spring Scheduling with Quartz 中安排过如此数量的作业,也不知道系统将如何处理它。以这种方式实现系统是个好主意吗?Spring Scheduling Quartz 会毫无问题地处理如此多的作业吗?

是的,Quartz 本身可以毫无问题地处理数以千计的作业和触发器。

如果您要同时执行许多作业,请确保为 Quartz 配置足够数量的工作线程。工作线程的数量通常应等于 运行 可以并发的最大作业数 + 一些小缓冲区(10% 左右)以防万一。

根据您所写的内容,我假设您的作业将是一次性作业,即每个作业只会执行一次。如果是这种情况,Quartz 会在您的作业完成执行后立即自动丢弃您的作业,除非您的作业被标记为持久的。 Quartz 会自动删除非持久性作业,如果它们没有被安排到 运行 将来。此功能可以帮助您减少注册的职位总数。

希望对您有所帮助。如果没有,请询​​问。