[英]How to run spring-batch jobs threadpooled?
我正在使用JobLauncher.run()
啟動spring-batch
作業。 問題:如何將這些調用線程化? 因此,例如,最多可以同時運行4個作業線程,並且任何其他作業只是排隊?
@Autowired
private JobRegistry registry;
@Autowired
private JobLauncher launcher;
Job job = registry.getJob("jobname");
launcher.run(job, params); //immediately starts the job
您可以將ThreadPoolTaskExecutor設置為SimpleJobLauncher(實際啟動作業的類)使用的任務執行程序。 此執行程序具有一些您可以設置的屬性,尤其是maxPoolSize。
public JobLauncher createJobLauncher() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(4);
taskExecutor.setMaxPoolSize(4);
taskExecutor.afterPropertiesSet();
SimpleJobLauncher launcher = (SimpleJobLauncher) super.createJobLauncher();
launcher.setTaskExecutor(taskExecutor);
return launcher;
}
請看一下這些文檔 。
可能是Spring Batch Multiple Threads的副本以及如何在Spring Batch中設置多線程? 。
我使用以下代碼異步啟動批處理作業。 但我不知道如何限制你提到的最大執行次數。
TaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
taskExecutor.execute(new Runnable() {
public void run() {
try {
jobLauncher.run(importJob, jobParametersBuilder.toJobParameters());
} catch (Exception e){
e.printStackTrace();
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.