我是批处理领域的新手,我正在尝试使用Spring batch解决下面提到的问题。我真的很难从中创建多步骤批处理作业。
给予
包含多个学生记录的csv文件
我们有一个RESTendpoint,该endpoint记录学生在所有科目中的分数,并为每个学生返回结果(通过/失败)。通过/失败逻辑在给定的restendpoint中定义。
待办事项
从csv中读取一批记录,每批进行一次REST调用,根据每个学生在所有三个科目中的分数更新结果。更新每个学生的结果,并为所有记录生成输出csv。
Class StudentMarksheet {
String studentId;
Integer subject1_score;
Integer subject2_score;
Integer subject3_score;
String result;
...
}
Class GenerateResultRequestResponseDto {
Long batchId
List<StudentMarksheet> students;
...
}
最新要求
我们可以接收csv或xml文件。根据文件类型,我们有两种不同的读写器(一种用于读写csv文件,另一种用于xml文件类型)。
我的设计方案
读取单个记录并从中创建StudentMarksheet对象-
最大的问题是我要做两份工作一份给CSV
由于REST endpoint在将学生写入文件之前会接受一个需要分块处理的学生列表,因此您可以使用ItemWriteListener#beforeWrite(list)
在其中进行调用。此侦听器是获取项目列表的第一个扩展点。因此,面向区块的步骤可以设计如下:
给定一个使用分区的Spring批处理作业,是否可能有多个分区步骤? 例如: 在上述示例中,是否可以将另一个添加到(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区逐个执行?
null 如果生成错误(文件不一致,文件不存在...),则不能执行 仅供参考,我使用的是没有XML配置的Spring批处理!只有注释:下面是我的作业配置类的样子:
我能用一个ItemReader和多个子步骤编写一个Spring批处理步骤吗?每个步骤后面都有一个ItemProcessor和一个ItemWriter? 我正在努力实现这样的目标: 补充说明 为了避免前后矛盾,我宁愿不读两遍 我认为这个问题与Spring Batch不同:一个阅读器、多个处理器和编写器,因为我需要按顺序处理项目,而不是并行处理。
我是Spring批次的新手。我需要在spring批处理中实现的任务如下: 需要从数据库读取一些元数据。 基于此元数据,我需要读取一些文件。 经过一些处理后,需要将这些值从文件写入数据库。 我的查询如下: c.另外,基于某些条件,我可能需要调用第三组阅读器。如何在步骤中有条件地调用读取器? 谢谢你看了我的帖子。我知道它很长。非常感谢任何帮助。另外,我想一个示例代码片段会帮助我更好地理解这一点。:)
那么,如何将作业配置为先运行单个步骤,然后并行运行多个步骤,然后运行最后一个步骤呢?
我不确定使用spring Batch是否可行。任何想法或我都无法实现它。谢谢。