如何在Spring Batch中处理多个相同的作业但使用不同的输入参数

时间:2018-07-27 15:38:46

标签: java parallel-processing java-stream spring-batch

对于我的项目,我们每天运行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文件输入数据库的工作。有时似乎可行,但我认为有更好的方法来做到这一点?

0 个答案:

没有答案