根据我的Spring Boot应用程序的业务逻辑和Quartz Scheduling以及MongoDB作为Job持久存储,系统的每个用户都可以创建必须在某个时间点执行的推迟作业。用户选择必须执行的时间。
现在我正在考虑每个用户为每个推迟的作业创建专用JobDetail
的方法,如下所示:
schedulerFactoryBean.getScheduler().addJob(jobDetail(), true, true);
我可以在这里看到的问题,通过这种方法,我可以在Quartz调度程序中快速创建数千个作业。以前我从未使用Quartz在Spring Scheduling中安排过如此多的工作,也不知道系统将如何处理它。以这种方式实现系统是一个好主意吗,Spring Scheduling Quartz会毫无问题地处理这么多的工作吗?
答案 0 :(得分:2)
是的,Quartz本身可以处理成千上万的作业和触发器而没有任何问题。
如果要同时执行许多作业,只需确保使用足够数量的工作线程配置Quartz。工作线程的数量通常应该等于可以并发运行的最大作业数+一些小缓冲区(10%左右)以防万一。
根据你的写作,我假设你的工作将是一次性的工作,即每个工作只会被执行一次。如果是这种情况,Quartz可以在完成执行后立即自动丢弃您的作业,除非您的作业被标记为持久。如果未安排在未来运行,Quartz会自动删除非持久性作业。此功能可以帮助您减少已注册作业的总数。
我希望这会有所帮助。如果没有,请询问。