我正在努力解决以下问题。我有一个单独的Spring Batch Job,它通过<cfqueryparam>
方法每10分钟执行一次。如果作业执行失败,则需要终止计划。我知道怎么做到的
a)致电@Scheduled
或
b)制作自定义ScheduledAnnotationBeanPostProcessor::postProcessBeforeDestruction()
,存储ThreadPoolTaskScheduler
,然后取消()删除它们,
,但是在两种情况下,问题都是相同的:成吨的Spring Batch ScheduledFutures
,因为它不再能够提交元数据。而且,尽管没有更多TransactionSystemExceptions
个任务要运行,该应用程序也不会终止...
有什么想法吗?
干杯!
答案 0 :(得分:1)
如果(从标记中)猜测出您正在使用Spring Boot。因此,在这种情况下,请注意,引导会发出类型为ApplicationEvent
的{{1}},其中JobExecutionEvent
为有效负载。因此,您可以创建一个实现JobExecution
的bean,并在作业失败时正常关闭应用程序上下文。
希望这会有所帮助。