java - 如何在 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 文件输入数据库的工作。它有时似乎有效,但我认为有更好的方法可以做到这一点吗?
解决方案
推荐阅读
- javascript - 如何使我的代码在性能方面更高效?
- r - 如何用这两个变量创建一个更简洁的表格?(R 编程)
- apache-flink - Flink 集成测试 S3
- python-3.x - Python Tkinter - 如何在窗格窗口中正确调整画布大小
- mongodb - 在文档mongoDB springboot中的对象列表中查找时间戳的最大值
- php - Google OAuth - 访问令牌和刷新令牌之间的区别
- json - Flutter 如何将地图从互联网 API 转换为列表?
- javascript - 如何阅读 nextjs 错误信息或定位错误
- javascript - 使用扩展语法修改状态的问题
- flutter - 我必须始终等待 Flutter Shared Preferences 吗?