【问题标题】:BatchJob - BatchJob still running when is server stopped批处理作业 - 服务器停止时批处理作业仍在运行
【发布时间】:2013-06-27 07:19:41
【问题描述】:

当 BJ 当前处于 RUNNING 状态且服务器已停止时,Spring Batch Admin 中的 BATCH JOB 状态即使在服务器停止后仍显示为 RUNNING,需要 FAILED

请帮忙?我们是否需要手动处理它,或者我们可以开箱即用地实现它。 需要这方面的帮助吗?

【问题讨论】:

    标签: spring spring-batch spring-batch-admin


    【解决方案1】:

    作业存储库(数据库实现)反映了最后一个“已知”状态。因此,在作业正在运行并且 JVM 崩溃的情况下,它将永远不会在数据库中更新。

    如果数据库与 JVM “不同步”,则该过程需要手动进行,似乎没有现成的解决方案。最简单的解决方案是在启动时执行一个脚本,检查批处理表是否有任何正在运行的作业,然后“失败”它们。

    update batch_job_execution set STATUS = 'FAILED', EXIT_CODE = 'FAILED', EXIT_MESSAGE = 'FORCED UPDATE' where job_execution_id in (select job_execution_id from batch_job_execution where status = 'RUNNING');
    

    在这种情况下,您需要考虑的一件事是 JobRepository 表以及与之关联的作业是否与另一个 JVM 共享。在这种情况下,您可能希望进行一次传递,该传递还评估作业是否仍在运行,超过了它所拥有的任何历史记录的最大运行时间。 (带有 max() end_time 的子选择 - 相同 job_name 的 create_time)

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      相关资源
      最近更新 更多