首页 > 解决方案 > Spring Scheduling Quartz 和数千个工作

问题描述

根据我使用 Quartz Scheduling 和 MongoDB 作为 Job 持久存储的 Spring Boot 应用程序的业务逻辑,系统的每个用户都可以创建必须在某个时间点执行的延迟作业。用户选择必须执行的时间。

现在我正在考虑每个用户JobDetail为每个推迟的工作创建一个专用的方法,如下所示:

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

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

标签: springmongodbquartz-schedulerspring-scheduled

解决方案


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

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

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

我希望这有帮助。如果没有,请询​​问。


推荐阅读