首页 > 解决方案 > 如何在 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"in all reader 和 writers设置所有 reader 同步SynchronizedItemStreamReader。在这里,我使用 Java 并行流来处理它们,而 XMLDB 是将 XML 文件输入数据库的工作。它有时似乎有效,但我认为有更好的方法可以做到这一点吗?

标签: javaparallel-processingjava-streamspring-batch

解决方案


推荐阅读