对于我的项目,我们每天运行Spring Batch以从DB中提取内容并将其以CSV格式发送给其他人。我已经配置好我的工作,它可以成功执行一次。但是我实际上想做相同的工作,但是将不同的工作参数传递给它们并并行运行它们。我该怎么办?
我尝试过
String[] springConfig = {"/applicationContext.xml"};
// Creating the application context object
ApplicationContext context = new ClassPathXmlApplicationContext(springConfig);
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
List<JobParameters> eList = new ArrayList<>();
for(int i=0; i<10; i++) {
jobParametersBuilder.addString("instance_id", UUID.randomUUID().toString(), true);
//jobParametersBuilder.addString("filename", "file" + i);
eList.add(jobParametersBuilder.toJobParameters());
}
eList.parallelStream().forEach(e -> XMLDB(context, e));
然后通过在所有读取器和写入器中使用scope="step"
和SynchronizedItemStreamReader
将所有读取器设置为同步。在这里,我使用Java并行流来处理它们,而XMLDB是一项将XML文件输入数据库的工作。有时似乎可行,但我认为有更好的方法来做到这一点?