Завершение @Scheduled Spring Batch Job - PullRequest
0 голосов
/ 16 января 2019

Я борюсь со следующей проблемой. У меня есть одно Spring Batch Job, которое выполняется каждые 10 минут методом @Scheduled. Если выполнение задания не удается, мне нужно прекратить график. Я знаю, как это сделать либо
а) звонить ScheduledAnnotationBeanPostProcessor::postProcessBeforeDestruction() или
б) создание пользовательского ThreadPoolTaskScheduler, сохранение ScheduledFutures, а затем отмена () их,

, но в обоих случаях проблема одна и та же: тонны Spring Batch TransactionSystemExceptions, потому что они больше не могут фиксировать метаданные. И несмотря на то, что больше нет задач @Scheduled, приложение не завершает работу ...

Есть идеи?

Ура!

1 Ответ

0 голосов
/ 17 января 2019

Если угадаете (из тегов) вы используете Spring Boot. Поэтому в этом случае обратите внимание, что при загрузке выдается ApplicationEvent типа JobExecutionEvent с JobExecution в качестве полезной нагрузки. Таким образом, вы можете создать bean-компонент, реализующий ApplicationListener<JobExecutionEvent> и изящно завершить работу контекста приложения, если задание не выполнено.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...