我有一个方案来读取一个巨大的文件,然后将记录发送到jms队列进行进一步处理。 该文件可以是 CSV / FIX 格式。我计划使用Spring批处理来实现相同的目的。 我阅读了有关 MultiResourcePartitioner 的信息,该信息用于在我们使用 spring batch 时读取大文件。
在这种情况下使用 spring batch 是个好主意吗?还是应该使用普通的Java代码读取大文件?还是针对这种情况还有其他更好的方法?
答案 0 :(得分:1)
出于某些原因,我认为Spring Batch是您的用例的不错选择:
FlatFileItemReader
和JmsItemWriter
(与使用纯Java自己编写代码相比)将输入文件物理划分为多个资源并使用MultiResourcePartitioner
对于您的用例确实是一个不错的选择。但是,这不是在Spring Batch中扩展面向块的步骤的唯一方法,您还可以使用:
AsyncItemProcessor
/AsyncItemWriter
的组合(如果在将项目写入队列之前对项目进行大量处理,则很有用)先前的3种扩展技术是在单个JVM中实现的。还有其他选项可用于跨多个JVM扩展批处理作业,例如远程组块和远程分区(但在您的用例中,IMO不需要这些)。
您可以在此处找到有关所有这些缩放技术的讨论以及代码示例:https://www.youtube.com/watch?v=J6IPlfm7N6w
希望这会有所帮助。