虽然我以前在Quartz方面有过一些经验,但我在现有项目上首次从零开始设置它。我们决定使用Quartz(部分)为未来的需求做准备。针对多个用户启动的任务的石英建议
我要寻找的建议/建议在以下方面:
要求
- 将有几种不同类型的用户发起的任务,每一个从几秒钟抽出几分钟任何地方。这些需要与请求它们的用户异步执行,并且即使用户在临时注销时也要启动。
- 这些任务将被分组到各个类别中。
- 在每个类别中,只有N(配置)任务应该同时执行
- 每个用户都必须能够检索任务列表他们,他/她发起
- 管理员必须能够检索任务列表为所有用户
- 任务必须在执行
- 任务的中间撤销必须撤销,而排队
- 如果出现故障,那是正在执行需要恢复并重新启动
- 聚类任何任务必须被supprorted
选项
我看到执行下列选项,并会很感激一些反馈。
- 多为自托管
- 维护自己独立的任务表,与预定的时间,用户,状态栏等
- 每组有运行每x秒,检查一个石英工作为表中的下一个任务执行并行执行。
- 我不知道如何在这种情况下实现n个并行执行,除了每个组的n个Quartz作业。
- 我期望在这种情况下Quartz不需要在重启时保留任何东西,尽管这意味着我的代码必须处理这种情况。
- 如果没有任务安排,石英工作仍然会火
- 石英管
- 每个任务的单独石英工作。
- 我不确定在这种情况下如何允许每组n个并行作业。看来Quartz注释可以用来一次阻止多个并行的Job。
- 石英表需要在数据库中保存。
- 石英本身将负责重新启动后恢复。
- 如果没有计划任务,则不会触发Quartz作业。
- 还有其他的东西吗?
我不确定(提前)上述每个要求对应的要求如何。
我希望根据我上面写的内容提供反馈意见。我找不到很多关于这方面的指导,因为大多数似乎仅限于以特定间隔或时间运行的Quartz作业,并执行与用户调度或用户请求无关的特定任务。
谢谢。
Acewin嗨。感谢您的答复。我想过你的问题,并且一直在做更多的阅读。我现在可以更好地(希望)以这种方式重述我的问题:用户启动任务。我想使用Quartz来调度和限制正在运行的同时任务的数量。我最好是(a)每个任务有一个Quartz作业实例,并根据需要使用专门的Quartz作业来触发它们,或者(b)有一个Quartz作业并根据数量创建n个触发器未完成的工作。这是否澄清我的问题? – Ask613
是的,现在清楚如何进行你应该能够拿出一个解决方案。当使用API唯一的方式来解决这个问题时,这是实施解决方案 – Acewin