Spring Scheduling Quartz和数千个工作

时间:2018-06-05 18:37:26

标签: spring mongodb quartz-scheduler spring-scheduled

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

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

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

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

1 个答案:

答案 0 :(得分:2)

是的,Quartz本身可以处理成千上万的作业和触发器而没有任何问题。

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

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

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