【问题标题】:How many ways we can stop cronjob without stopping the server in hybris?有多少种方法可以在不停止 hybris 的服务器的情况下停止 cronjob?
【发布时间】:2017-02-09 08:27:31
【问题描述】:

我认为我们可以通过 hmc 阻止 cronjob。 如果除了有什么办法请回答

【问题讨论】:

    标签: hybris


    【解决方案1】:

    您可以在有关如何停止线程中的无限循环的更全局问题中找到答案。 (见:https://stackoverflow.com/a/2358169/1140748

    您的作业在专用线程中启动。

    您必须阻止它的唯一方法是使用可以从外部对象设置的标志。

    在您的 JobPerformable(扩展 AbstractJobPerformable)中,您必须经常设置此代码块来检查是否应该停止 cron:

        if (clearAbortRequestedIfNeeded(cronJobModel)) {
            LOG.error(String.format(MSG_INFO_JOB_ABORTED, cronJobModel.getCode()));
            return new PerformResult(CronJobResult.UNKNOWN, CronJobStatus.ABORTED);
        }
    

    JobPerformable 必须是“可中止的”。也就是说,将这组代码放入 JobPerformable 实现中:

    @Override
    public boolean isAbortable()
    {
        return true;
    }
    

    【讨论】:

      【解决方案2】:

      您始终可以使用(中止 Cronjob 按钮)从 HMC 中止您的 Cronjob,但是您的作业应该是可中止的作业,否则您将无法停止它。

      How to Write an Abortable Job上查看本教程。

      【讨论】:

      • 其实我想知道除了HMC,还有什么方法可以停止cronjob吗?
      • 另一种解决方案是尝试更新(完成状态)或通过 impex 文件删除您的 cronjob。
      • 我认为如果将 cron 作业的状态更改为 Finished 或 Aborted 不会停止它。
      • 那你能告诉正确的方法吗?
      • 正确的方法是上面答案中描述的方法,我认为没有其他方法可以做到。
      【解决方案3】:

      其实Hybris有几种方法可以停止cronjob。

      第一最佳方法是从HMC(现在是Backoffice Administration Cockpit)中止它。为此,cronjob 必须是abortable。更多关于可中止的 cronjobs here

      您还可以通过转到Monitoring > Cron Jobs 中止HAC 中的cronjobs。这与第一种方法的工作方式或多或少相同。

      当前两个不可用时,还有一些方法可以中止/停止/完成 cronjob:

      1. 您可以通过 impex 导入或直接在数据库上删除 cronjob。
      2. 您可以通过 impex 导入或在数据库中将 cronjob 的状态设置为 FINISHED
      3. 我相信你也可以通过webservice API 来做这两个(1. 和 2.)。更多关于网络服务 API here

      最后但同样重要的是,您可以使用以下方式以编程方式中止 cronjob:

      cronJobService.requestAbortCronJob(myCronJobModel);
      

      在这种情况下,cronjob 也必须是 abortable

      更多关于 cronjobs here.

      【讨论】:

      • 我认为如果 cronjob 不可中止,这些点都不会让它停止,(在我看来删除 cronjob 是不合适的,我更喜欢重新启动服务器而不是删除 cronJob,因为 cronJob可能包含一些历史/有趣的信息,我不希望它们被删除)。
      • 但我想知道在不中断服务器的情况下如何停止 cronjob ?
      【解决方案4】:

      在 hac 中的 impex 下运行

      update CronJob[batchmode=true];itemtype(code)[unique=true];active;CronJob;false
      

      【讨论】:

        猜你喜欢
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        相关资源
        最近更新 更多