Spring batch Spring批处理:如果作业';她在跑步

Spring batch Spring批处理:如果作业';她在跑步,spring-batch,Spring Batch,我从两个切入点开始工作: 从“@Scheduled” 从控制器端点 这里是我的工作服务: @服务 公营就业服务{ 私有静态最终记录器Logger=LoggerFactory.getLogger(JobService.class); 私有JobLauncher JobLauncher; 私人工作; 私人职业giacImgJob; 公共就业服务( JobLauncher JobLauncher, @GiacImg Job giacImgJob, @GiacTxt作业GiacTxt作业 ) { t

我从两个切入点开始工作:

  • “@Scheduled”
  • 从控制器端点
这里是我的
工作服务

@服务
公营就业服务{
私有静态最终记录器Logger=LoggerFactory.getLogger(JobService.class);
私有JobLauncher JobLauncher;
私人工作;
私人职业giacImgJob;
公共就业服务(
JobLauncher JobLauncher,
@GiacImg Job giacImgJob,
@GiacTxt作业GiacTxt作业
) {
this.jobLauncher=jobLauncher;
this.giacImgJob=giacImgJob;
this.giacTxtJob=giacTxtJob;
}
/**
*
*/
@已计划(cron=“${connector.giac img cron}”)
公营机构{
调试(“启动giac img作业…”);
试一试{
this.jobLauncher.run(giacImgJob,newjobParameters());
}捕获(JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
|JobParametersInvalidException(异常值){
抛出新的ConnectorFault(“启动giac img作业时出错”,ex);
}
JobService.logger.debug(“Giac img已消失…”);
}
/**
*
*/
@已计划(cron=“${connector.giac txt cron}”)
公共无效giacTxt(){
调试(“启动giac txt作业…”);
试一试{
this.jobLauncher.run(giacTxtJob,newjobParameters());
}捕获(JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
|JobParametersInvalidException(异常值){
抛出新的ConnectorFault(“启动giac img作业时出错”,ex);
}
调试(“Giac txt已消失…”);
}
}
如您所见,
JobService.giacImg
JobService.giacTxt
都是
@Scheduled

另一方面,这里是我的控制器:


@RestController
@请求映射(ControllerConstants.Job.BASE)
公共类ConnectorController实现ConnectorController{
私人就业服务;
公共连接器控制器MPL(作业服务作业服务){
this.jobService=jobService;
}
/**
*{@inheritardoc}
*/
@凌驾
@后期映射(ControllerConstants.Job.GANCIMG)
公营机构{
this.jobService.giacImg();
}
/**
*{@inheritardoc}
*/
@凌驾
@后期映射(ControllerConstants.Job.txt)
公共无效giacTxt(){
this.jobService.giacTxt();
}
}
我需要避免执行正在运行的作业


有什么想法吗?

如果传递的参数完全相同,Spring批处理作业不会运行。但是,如果要检查某些参数是否已经有正在执行的作业,则可以使用
JobExecutionDao
查询
BATCH\u job\u EXECUTION
以查找正在运行的实例

对于
JobExecutionDao