在Spring Batch中读取数千个jpeg文件的名称作为输入

时间:2017-10-15 12:45:32

标签: spring spring-integration spring-batch batch-processing

我正在使用Spring Batch并为我的批处理过程定义一个作业,但问题是我需要从特定目录中读取80.000个jpeg文件的名称作为输入,我想读取例如每个块1000个。 我也听说过Spring Integration这样做,但我不知道这是否正确。 如果我采取正确的方法,请指导我。

感谢。

更新:

当我想要初始化我的自定义项目阅读器时,我是否应该将所有文件提取到像List或其他类似的集合结构中?它是最佳的吗? 我想根据每个文件的名称从数据库中一次读取项目。我该怎么做JpaPagingItemReader

2 个答案:

答案 0 :(得分:0)

是的,Spring Integration FileReadingMessageSource确实可以用于此任务。读取文件为发出消息的payload。您可以使用maxMessagesPerPoll = 1000来获取每个轮询任务的最大值。

如果您确实需要将它们合并为一条消息,则需要aggregator

对不起,我不知道Spring Batch从这个角度来建议你这么好。

答案 1 :(得分:0)

这实际上取决于你想用JPEG做什么。基于您对以每块1000块分块的兴趣,除非您需要某种形式的编排功能(例如在文件出现时运行作业),否则没有任何理由可以使用Spring Integration。

只需使用ItemReader并将步骤配置为块1000.如果可以使用Spring Batch中的现成组件并行处理它们,您甚至可以对它们进行分区。