Java Spring Batch:如何验证执行是并行完成的?

Posted

技术标签:

【中文标题】Java Spring Batch:如何验证执行是并行完成的?【英文标题】:Java Spring Batch: How to Verify That Execution is Done in Parallel? 【发布时间】:2017-05-11 11:10:19 【问题描述】:

使用经典的java多线程执行,可以很容易地证明并行执行(见:SO: Java Thread Example) 通过调用

this.getId()

这会导致 System.output.println():

[ID 9]
[ID 10]
[ID 8]

如何证明 Java Spring Batch/Spring Boot 中确实发生了并行执行?

【问题讨论】:

你在春季批处理中使用作业吗? 弹簧靴批次对我来说是全新的。因此,如果有帮助,我可以使用工作 【参考方案1】:

就像documentation 描述的那样,您可以配置jobssteps

要查看当前正在运行的作业或步骤,您将为两者命名。

@Configuration
@EnableBatchProcessing
@EnableAutoConfiguration
public class BatchConfiguration 

  @Autowired
  private JobBuilderFactory jobBuilderFactory;

  @Autowired
  private StepBuilderFactory stepBuilderFactory;

  @Bean
  public Step step1() 
    return stepBuilderFactory.get("step1")
        .tasklet(new Tasklet() 
          public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) 
            return null;
          
        )
        .build();
  

  @Bean
  public Job job(Step step1) throws Exception 
    return jobBuilderFactory.get("job1")
        .incrementer(new RunIdIncrementer())
        .start(step1)
        .build();
  

JobExecution 有很多关于你工作的信息。

这里有一些有用的文档:

Configuring and Running a Job Creating a Batch Service Spring Batch Tutorial

【讨论】:

如何在一个步骤中使用 JobExecution?【参考方案2】:

一个非常通用的方法是:

    Thread thread = Thread.currentThread();
    System.out.println(thread);

【讨论】:

以上是关于Java Spring Batch:如何验证执行是并行完成的?的主要内容,如果未能解决你的问题,请参考以下文章

Java spring boot + spring batch:处理大量信息

记录 Spring Batch 执行的 SQL 查询

如何防止我的 Spring Boot Batch 应用程序在执行测试时运行?

如何获取具有已完成状态的 Spring Batch 作业的最后执行的开始或结束日期?

如何开始使用 Spring Batch? [关闭]

《spring batch 批处理框架》第9、10、11章