Hybris cronjob - 如果不运行则启动cronjob

时间:2017-09-19 14:21:18

标签: cron hybris

我正在研究JMS队列。我的要求是监视队列大小并在队列中没有消息时发送电子邮件。 Cronjob作业将监视队列并在队列中的第一条消息上触发。以下是触发工作的代码。

CronJobModel CronJobModel = new CronJobModel();
CronJobModel.setCode("Job1");
CronJobModel = flexibleSearchService
        .getModelByExample(CronJobModel);

modelService.save(CronJobModel);

LOG.debug(" Check and start job");

if (!cronJobService.isRunning(CronJobModel)) {               
    LOG.info("Job initiated on first message in the Queue. ");
    cronJobService.performCronJob(CronJobModel);

        LOG.info("Job status::" + cronJobService.isRunning(CronJobModel));

}

控制台输出

  

在队列中的第一条消息上启动作业。

     

工作状态:: false

因此,作业不止一次被触发。为什么cronjob没有启动并立即更改为运行状态?是否有更好的方法来识别已触发的作业并确保不再触发?

1 个答案:

答案 0 :(得分:1)

您可以尝试

modelService.refresh(CronJobModel)

所以例如:

if (!cronJobService.isRunning(CronJobModel)) {               
    LOG.info("Job initiated on first message in the Queue. ");
    cronJobService.performCronJob(CronJobModel);
    modelService.refresh(CronJobModel);
    LOG.info("Job status::" + cronJobService.isRunning(CronJobModel));
}

这将从db获取最新信息(例如,如果另一个线程将状态更改为RUNNING)。 不确定这是否是一个好的方法。