我正在尝试在spring批处理中实现一个面向块的步骤,它从数据库中检索记录并将每个块写入一个单独的文件 . 例如,假设DB中有500条记录 . 我需要我的工作来创建10个文件,每个文件有50个记录 .
PS:主要目的是同时创建输出文件 . 由于ItemWriter实现不是线程安全的,我决定创建单独的文件作为输出,这样我就可以减少完成步骤所花费的总时间 .
asnyone知道如何使用Spring Batch实现它吗?我发现了一个使用分区并行处理多个文件的示例项目,但这并不是我想要做的 . 在我的例子中,输入是一个表,而输出是多个文件 .
2 回答
我找到了答案,
spring spring samples中的partitionJdbcJob完全符合我的要求
Spring Batch Sample Job Source can be found here
我建议你写一个服务,哪个角色是在文件中写你的块 . 此服务将采用一个输入:一个块 . 它的逻辑是将其写入文件中 . 您将编写多线程的东西以便在此服务中编写 .
您的批处理将以多线程方式向此服务发送块 .
因此,您可以通过Spring Batch获得多线程的好处,并通过自己编写将在文件中输出块的服务来控制潜在的错误 .
使用ItemWriterAdapter将写入内容委托给您的服务 .