我使用的是spring批处理,和通常使用的一样,我有读取器、处理器和写入器。
我有两个问题
1>Reader查询所有200条记录(表中记录总大小为200,我给出了pageSize=200),因此它得到所有200条记录,在处理器中,我们需要所有这些记录的列表,因为我们必须将每个记录与其他199条记录进行比较,以便将它们分组在不同的层中。因此我在想,如果我们能在处理步骤中得到那个列表,我就可以操纵它们了。我该如何处理。
2>在处理阶段,我需要从数据库中获取一些主数据,根据这些数据来处理所有的输入记录,我考虑在处理bean中注入数据源,获取所有的主表数据,处理所有的记录。这是一个好的方法或请提出其他的建议。
<job id="sampleJob">
<step id="step1">
<tasklet>
<chunk reader="itemReader" processor="processor" writer="itemWriter" commit-interval="20"/>
</tasklet>
</step>
</job>
处理器是
@Override
public User process(Object item) throws Exception {
// transform item to user
return user;
}
我想要像
public List<User> process(List<Object> item) throws Exception {
// transform item to user
return user;
}
我在这里发现了一些帖子,但是他们说要在writer中得到列表。但是我不喜欢在writer中处理任何东西,因为这会扼杀writer和处理器的定义。是否有任何配置来获取这个过程方法中的列表。
谢谢你
由于itemprocessor
接收您从itemreader
返回的任何内容,因此您需要您的itemreader
来返回列表
。列表
实际上是您正在处理的“项目”。Spring批处理示例中有一个这样的示例。AggregateItemReader
从委托ItemReader
读取所有项,并将它们作为单个列表返回。您可以在Github上查看它:https://Github.com/spring-projects/spring-batch/blob/master/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/multiline/aggregateitemreader.java
我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样:
我正在使用spring批处理使用RepositoryItemReader从postgresql DB读取记录,然后将其写入主题。我看到大约有100万条记录需要处理,但它并没有处理所有的记录。我已经将reader的pageSize设置为10,000并且与提交间隔(块大小)相同
我的计划是 使用多线程步骤,以便每个线程读取一条记录-在处理器中生成多条记录-将生成的记录写入单独的excel文件。 使用同步读取器从进程表中读取。 在处理器中,使用读取器中返回的记录查询DB(涉及多个联接)并形成一个复合对象。 用自定义编写器将复合对象写入文件 就内存管理而言,上面的方法听起来不太好。 因为要写入的记录是在处理器中生成的(而不是从读取器那里获得的,读取器只是给出记录ID),所以只
我是Spring批处理的新手,我只想问如何从多行结果集中检索数据。我有以下场景: > 有两个不同的表说员工 使用时,我只能创建一个工资单子级,但该表可能有多个子级。请帮助...
我正在尝试使用多个处理器类在处理器步骤中处理记录。这些类可以并行工作。目前我已经编写了一个多线程步骤,其中我 设置处理器类的输入和输出行 提交给遗嘱执行人服务 获取所有未来对象并收集最终输出
我在表中总共有8条记录,其中6条在spring批处理调用read时可以使用jpareader。现在我将页面大小和块大小设置为1以进行测试。期望作业运行时,它应该进行6次读取调用,然后它应该逐个处理,逐个写入。但实际上发生的是,它只是调用read 4次(从日志中我可以看到这样读取页面0...1)并处理4个,其中一个由于不匹配写入标准而被过滤掉,然后它只是更新了3个记录,作业标记为成功完成。