基于Quartz的Java异步调度

基于Quartz的Java异步调度,java,asynchronous,scheduling,quartz-scheduler,Java,Asynchronous,Scheduling,Quartz Scheduler,我需要一种在Java中实现异步作业调度的机制,并且正在研究,但是它似乎没有提供必要的功能 更具体地说,我的应用程序运行在不同的节点上,它有一个基于web的UI,用户可以通过它安排几个不同的作业。当作业完成时(将来的某个时候),它应该向UI报告,以便通知用户其状态。在此之前,用户应该可以选择编辑或取消计划的作业 一种实现方法是让调度程序线程在其中一个节点的后台持续运行,并收集作业执行的作业详细信息定义 在任何情况下,都有两个问题(适用于单节点或多节点场景): Quartz是否允许修改或取消已安排的

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

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

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

在任何情况下,都有两个问题(适用于单节点或多节点场景):

  • Quartz是否允许修改或取消已安排的作业
  • 如何实现“回调”机制,以便将作业执行结果报告回UI
  • 非常感谢任何代码示例或指针

  • Quartz是否允许修改或取消已安排的作业
  • 您可以“不安排”作业:

    或删除作业:

    scheduler.deleteJob(jobKey("job1", "group1"));
    
    如文件所述:

    请注意,这两者之间的主要区别在于不计划作业会删除给定的触发器,而删除作业会删除给定作业的所有触发器

  • 如何实现“回调”机制,以便将作业执行结果报告回UI
  • 通常,在web世界中,您将轮询web服务器以获取更改。根据您的web框架,可能有一个组件(Push、Pull、Poll?)使这变得容易。此外,您需要做的是在服务器上存储有关作业的一些状态。作业完成后,可以更新数据库或内存中的值。这反过来又会被轮询获取并显示给用户

  • Quartz是否允许修改或取消已安排的作业
  • 您可以“不安排”作业:

    或删除作业:

    scheduler.deleteJob(jobKey("job1", "group1"));
    
    如文件所述:

    请注意,这两者之间的主要区别在于不计划作业会删除给定的触发器,而删除作业会删除给定作业的所有触发器

  • 如何实现“回调”机制,以便将作业执行结果报告回UI

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

    要用Quarz完成@johncarl的答案,还需要

  • 在执行前后处理事件
  • 分组你的工作
  • 支持企业版
  • 最重要的是cron表达式

  • 要用Quarz完成@johncarl的答案,还需要

  • 在执行前后处理事件
  • 分组你的工作
  • 支持企业版
  • 最重要的是cron表达式