在不停止 hybris 中的服务器的情况下,我们有多少种方法可以停止 cronjob?

How many ways we can stop cronjob without stopping the server in hybris?

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

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

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

您可以在如何停止线程中的无限循环这一更为全局性的问题中找到答案。 (参见:)

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

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

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

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

JobPerformable 必须是 "abortable"。说把这段代码放在 JobPerformable 实现中:

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

实际上有几种方法可以在 Hybris 中停止 cronjob。

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

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

当前两个不可用时,还有一些方法可以 abort/stop/finish cronjob:

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

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

cronJobService.requestAbortCronJob(myCronJobModel);

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

有关 cronjobs 的更多信息 here

运行 在 hac

中低于 impex
update CronJob[batchmode=true];itemtype(code)[unique=true];active;CronJob;false