spring - Spring Scheduling Quartz 和数千个工作
问题描述
根据我使用 Quartz Scheduling 和 MongoDB 作为 Job 持久存储的 Spring Boot 应用程序的业务逻辑,系统的每个用户都可以创建必须在某个时间点执行的延迟作业。用户选择必须执行的时间。
现在我正在考虑每个用户JobDetail
为每个推迟的工作创建一个专用的方法,如下所示:
schedulerFactoryBean.getScheduler().addJob(jobDetail(), true, true);
我在这里可能看到的问题是,通过这种方法,我可以在 Quartz 调度程序中快速创建数千个作业。以前我从来没有在 Spring Scheduling with Quartz 中安排过这么多的作业,也不知道系统将如何处理它。以这种方式实现系统是否是一个好主意,Spring Scheduling Quartz 是否可以毫无问题地处理如此多的工作?
解决方案
是的,Quartz 本身可以毫无问题地处理数千个作业和触发器。
如果您要同时执行许多作业,只需确保为 Quartz 配置了足够数量的工作线程。工作线程的数量通常应该等于可以同时运行的最大作业数 + 一些小缓冲区(10% 左右)以防万一。
根据您所写的内容,我假设您的工作将是一次性工作,即每个工作只会执行一次。如果是这种情况,Quartz 可以在它们完成执行后立即自动丢弃你的作业,除非你的作业被标记为持久的。Quartz 会自动删除非持久作业,如果它们没有计划在将来运行。此功能可以帮助您减少注册工作的总数。
我希望这有帮助。如果没有,请询问。
推荐阅读
- php - 无法将 .GLB 上传到 Wordpress 媒体位置
- python - Tkinter GUI 使用 cx-freeze 显示为黑色
- angular - angular 6 - 订阅内的 defaultValue formGroup
- r - R中合并期间丢失的行
- javascript - Javascript:按数组索引号列表过滤数组
- sql - 左连接后计算总数并要求 0 用于 NULL 变量 - SQL Server
- html - 我们可以为 Squarespace 网站的一个页面手动定义所有 HTML,并将其 UI 用于其他页面吗?
- reactjs - 从前端发布数据时遇到 CORS 问题(React)
- c++ - 在声明中合并两个常量 `std::set`s(不在运行时)
- html - DocuSign API - 在 HTML 文档中添加手动分页符