2

我正在尝试在春季批处理中实现一个面向块的步骤,该步骤从数据库中检索记录并将每个块写入一个单独的文件。例如,假设数据库中有 500 条记录。我需要我的工作来创建 10 个文件,每个文件有 50 条记录。

PS:主要目的是同时创建输出文件。由于 ItemWriter 实现不是线程安全的,因此我决定创建单独的文件作为输出,以便减少完成该步骤所花费的总时间。

有人知道如何用 Spring Batch 实现它吗?我找到了一个示例项目,它使用分区并行处理多个文件,但这并不是我想要做的。就我而言,输入是单个表,而输出是多个文件。

这是链接:FileParallelProcessing

4

2 回答 2

1

我找到了答案,

春季批次样本中的 partitionJdbcJob 正是我想要的

Spring Batch Sample Job Source 可以在这里找到

于 2011-04-22T08:11:36.937 回答
0

我建议您编写一个服务,该服务的作用是将您的块写入文件。该服务将接受一个输入:单个块。其逻辑是将其写入文件中。您将编写用于在此服务中编写的多线程内容。

您的批处理将以多线程方式将块发送到此服务。

因此,您可以通过 Spring Batch 获得多线程的好处,并且您可以通过自己编写将在文件中输出块的服务来控制潜在的错误。

使用ItemWriterAdapter将写作内容委托给您的服务。

于 2011-04-18T09:04:31.030 回答