gpt4 book ai didi

java - 使用 Quartz 在 Java 中进行异步调度

转载 作者:行者123 更新时间:2023-11-29 08:07:00 25 4
gpt4 key购买 nike

我需要一种在 Java 中实现异步作业调度的机制,并且正在查看 Quartz Scheduler , 但它似乎没有提供必要的功能。

更具体地说,我的应用程序在不同的节点上运行,它有一个基于网络的用户界面,用户可以通过它安排几个不同的工作。当一个作业完成时(将来某个时候),它应该向 UI 报告,以便用户了解其状态。在此之前,用户应该可以选择编辑或取消计划的作业。

一种实现方法是让一个调度程序线程在其中一个节点的后台持续运行,并收集作业执行的 JobDetail 定义。

无论如何,有两个问题(适用于单节点或多节点场景):

  1. Quartz 是否允许修改或取消已安排的作业?
  2. 如何实现“回调”机制,将作业执行结果反馈给UI?

非常感谢任何代码示例或指针。

最佳答案

  1. Quartz 是否允许修改或取消已安排的作业?

您可以“取消安排”工作:

scheduler.unscheduleJob(triggerKey("trigger1", "group1"));

或删除作业:

scheduler.deleteJob(jobKey("job1", "group1"));

如文档中所述:

http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/UnscheduleJob

请注意,两者之间的主要区别是取消计划作业会删除给定的触发器,而删除作业会删除给定作业的所有触发器。

  1. 如何实现“回调”机制,将作业执行结果反馈给UI?

通常,在网络世界中,您将轮询网络服务器以获取更改。根据您的 Web 框架,可能有一个组件(推、拉、轮询?)可以使这变得容易。此外,您需要做的是在服务器上存储一些关于您的作业的状态。作业完成后,您可以更新数据库或内存中的值。这反过来又会被轮询拾取并显示给用户。

关于java - 使用 Quartz 在 Java 中进行异步调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com