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 描述的那样,您可以配置jobs
和steps
。
要查看当前正在运行的作业或步骤,您将为两者命名。
@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 Boot Batch 应用程序在执行测试时运行?