【问题标题】:What does BLOCKED state mean for Quartz triggerBLOCKED 状态对 Quartz 触发器意味着什么
【发布时间】:2014-09-09 04:48:09
【问题描述】:

对于某些 Quartz 工作,它失败了;检查数据库中的触发器状态后,显示BLOCKED。这个BLOCKED 具体是什么意思?

【问题讨论】:

    标签: quartz-scheduler


    【解决方案1】:

    在此处发布问题之前进行一些搜索可能会有所帮助?

    WAITING = 触发器的正常状态,等待触发时间到达并被调度程序获取以触发。

    PAUSED = 表示使用了 scheduler.pauseXXX() 方法之一。触发器在恢复之前没有资格被触发。

    ACQUIRED = 调度程序节点已将此触发器识别为将要触发的下一个触发器 - 可能仍在等待其触发时间到达。触发后,触发器将被更新(根据其重复设置,如果有)并重新进入 WAITING 状态(如果不再重复,则将其删除)。

    BLOCKED = 阻止触发触发器,因为它与已在执行的 StatefulJob 相关。当有状态作业完成其执行时,与该作业相关的所有触发器都将返回到 WAITING 状态。

    换句话说,当一个状态为 BLOCKED 时,另一个触发器(或该触发器的一个实例)已经在执行该触发器的有状态作业,因此该触发器被阻塞,直到另一个触发器完成为止。

    文档链接可能对您将来的参考有用。http://www.docjar.com/docs/api/org/quartz/Trigger.html

    【讨论】:

    • 我的触发器已被阻止 5 天。我该怎么做才能解决它?
    • 跟进:在我的情况下,如果我只是停止服务并将触发状态更新为“等待”,然后重新启动服务,它将继续工作。不知道这是否有任何可怕的副作用
    • @JoePhillips :我认为,当您停止基本上会杀死所有活动线程的服务时,这将为您的等待线程释放连接,并可能释放它之后工作的原因。当您停止服务并验证作业打算执行的所有操作都已完成时,最好检查活动作业。如果是,那么看看为什么即使它完成了所有操作,作业也不会释放线程。
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2023-04-02
    • 2013-07-22
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多