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