Hybris cronjob-如果未运行,则启动cronjob
我正在处理JMS队列。我的要求是监视队列大小,并在队列中没有消息时发送电子邮件。Cronjob作业将监视队列并在队列中的第一条消息时触发。下面是触发作业的代码Hybris cronjob-如果未运行,则启动cronjob,cron,hybris,Cron,Hybris,我正在处理JMS队列。我的要求是监视队列大小,并在队列中没有消息时发送电子邮件。Cronjob作业将监视队列并在队列中的第一条消息时触发。下面是触发作业的代码 CronJobModel CronJobModel = new CronJobModel(); CronJobModel.setCode("Job1"); CronJobModel = flexibleSearchService .getModelByExample(CronJobModel); mo
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没有立即启动并更改为运行状态?是否有更好的方法来识别作业已触发并确保不再触发?您可以尝试执行以下操作:
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));
}
这将从数据库中获取最新信息(例如,另一个线程的状态更改为RUNNING)。
但总体而言,不确定这是否是一个好方法