如何使用基于块的处理处理 Spring 批次中的项目列表|在 Chunk 中批量处理项目

How to process List of items in Spring batch using Chunk based processing| Bulk processing items in Chunk

我正在尝试实施 Spring 批处理作业,其中为了处理记录,它需要 2-3 次数据库调用,这会减慢记录的处理速度(大小为 100 万)。如果我使用基于块的处理,它会单独处理每条记录,并且性能会很慢。因此,我需要一次性处理 1000 条记录,因为批量处理会减少数据库调用并提高性能。但我的问题是,如果我实现 Tasklet,那么我也会失去可重启性和 retrial/skip 功能,如果使用 AggregateInputReader 实现,我不确定对可重启性和事务处理有什么影响。 根据以下线程,AggregateReader 应该可以工作,但不确定它在失败时对事务处理和可重启性的影响:

面向块的处理模型中的第一个扩展点是 ItemWriteListener#beforeWrite(List items),它使您可以访问要写入的项目列表。因此,如果您不想在 ItemProcessor 中一次丰富一个项目,您可以使用该侦听器一次对整个块进行丰富。