繁体   English   中英

Spring批处理限制跨多个服务器的单个作业实例

[英]Spring batch restrict single instance of job across multiple servers

我有一个Spring Batch作业,可以跨多个服务器运行。 我有一个侦听器,可以防止在一台服务器上同时运行作业的多个实例。 但是,我想确保不能在多台服务器上同时运行此作业。

我搜索并没有找到解决此问题的方法

我实现了一个侦听器,该侦听器检查与特定名称匹配的spring批处理控制表中正在运行的作业执行的数量。 如果执行的大小超过1,则当前作业的jobExecution执行失败。 这是代码:

@Component
public class SingleInstanceListener implements JobExecutionListener {
    @Autowired
    private JobExplorer explorer;

    @Override
    public void beforeJob(JobExecution jobExecution) {
        String jobName = jobExecution.getJobInstance().getJobName();
        Set<JobExecution> executions = explorer.findRunningJobExecutions(jobName);
        if(executions.size() > 1) {
            jobExecution.stop();
        }
    }

    @Override
    public void afterJob(JobExecution jobExecution) {

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM