是否有解决方案允许您检查给定作业(JobInstance)的作业存储库,当天是否存在已完成的作业,如果当天batch_job_execution表上没有完成状态,那么我必须发送一个通知或退出代码,就像我们今天什么都没有得到的那样。
我计划在一个从JobExecutionListenerSupport扩展的类中实现该解决方案,如下所示:
public class JobCompletionNotificationListener extends JobExecutionListenerSupport {
private Logger logger = LoggerFactory.getLogger(JobCompletionNotificationListener.class);
private JobRegistry jobRegistry;
private JobRepository jobRepository;
public JobCompletionNotificationListener(JobRegistry jobRegistry, JobRepository jobRepository) {
this.jobRegistry = jobRegistry;
this.jobRepository = jobRepository;
}
@Override
public void afterJob(JobExecution jobExecution) {
System.out.println("finishhhhh");
//the logic if no job completed to day
if(noJobCompletedToDay){
Notify();
}
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
logger.info("!!! JOB FINISHED! -> example action execute after Job");
}
}}
发布于 2020-02-24 16:44:58
根据您何时执行该检查,您可能还会确保当前没有正在运行的作业(JobExplorer#findRunningJobExecutions可以提供帮助)。
发布于 2020-02-24 06:47:14
您可以通过多种方式实现监控。从4.2版本开始,Spring Batch就提供了对基于千分尺的度量和监控的支持。有一个spring grafana示例,其中包含prometheus和grafana,您可以从这些工具中定制自定义电路板或启动警报。
如果你有几个批处理过程,这可能是最好的选择,除此之外,这些工具将帮助你监控服务,应用程序等。
内置指标:
作业execution
的项processing
您可以创建自己的自定义指标(例如,执行失败)。
https://stackoverflow.com/questions/60367310
复制相似问题