2013-10-08 2 views
3

У меня есть несколько маршрутов, выглядит следующим образом:маршрута Camel Кварц выполнения нежелательных работу при запуске маршрута

from("quartz://" + getJobId() + "?cron=" + cronExpression + "&stateful=true") 
     .routeId(getJobId()) 
     .autoStartup(false) 
     .to(getRouteTo()); 

Этих маршруты могут быть запущены и остановлены из консоли администрирования. У меня проблема заключается в следующем:

Если маршрут настроен для работы каждого дня в 17:00, в настоящее время, если мой маршрут начинаются после 17:00, кварцевого уведомления, что он должен был бежать в 17:00 попытается восстановить пропущенное выполнение.

Я не хочу, чтобы это случилось, что я хочу:

  • Я начинаю свой путь в день1 до 17:00, задание будет запущено day1 в 17:00
  • Я начинаю мой маршрут в 1-й день после 17:00, работа должна быть активирована на день2 в 17:00

Связано ли это с тем, что я выбрал работу с состоянием? Я выбрал работу с состоянием, чтобы избежать одновременного выполнения одной и той же работы.

+0

Я думаю, вы можете настроить осечку кварца, чтобы сказать Кварцу, что он должен делать в этих ситуациях. –

+0

@ClausIbsen спасибо за указатель. Я посмотрю на это. –

+0

Можете ли вы ссылаться на свой новый вопрос, а затем закрыть этот вопрос? –

ответ

1

на основе внушения Клауса, возможно, следующий будет работать в качестве параметра на кварцевой работу (при условии, что вы используете org.quartz.SimpleTrigger):

trigger.misfireInstruction = org.quartz.SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

EDIT: на основе комментариев soilworker, тем выше должна быть:

trigger.misfireInstruction = 2

+0

Я попытался добавить trigger.misfireInstruction = 2 как вариант, и это работает сейчас. Вы не можете добавить trigger.misfireInstruction =, потому что тогда верблюд выбросит ошибку, чтобы он не смог преобразовать свойство string в int. – soilworker

Смежные вопросы