【发布时间】:2017-02-09 08:27:31
【问题描述】:
我认为我们可以通过 hmc 阻止 cronjob。 如果除了有什么办法请回答
【问题讨论】:
标签: hybris
我认为我们可以通过 hmc 阻止 cronjob。 如果除了有什么办法请回答
【问题讨论】:
标签: hybris
您可以在有关如何停止线程中的无限循环的更全局问题中找到答案。 (见: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;
}
【讨论】:
您始终可以使用(中止 Cronjob 按钮)从 HMC 中止您的 Cronjob,但是您的作业应该是可中止的作业,否则您将无法停止它。
在How to Write an Abortable Job上查看本教程。
【讨论】:
其实Hybris有几种方法可以停止cronjob。
第一和最佳方法是从HMC(现在是Backoffice Administration Cockpit)中止它。为此,cronjob 必须是abortable。更多关于可中止的 cronjobs here。
您还可以通过转到Monitoring > Cron Jobs 中止HAC 中的cronjobs。这与第一种方法的工作方式或多或少相同。
当前两个不可用时,还有一些方法可以中止/停止/完成 cronjob:
FINISHED。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
【讨论】: