使用Spring Batch读取大文件并发送到JMS队列

时间:2019-01-01 18:54:24

标签: spring-batch batch-processing

我有一个方案来读取一个巨大的文件,然后将记录发送到jms队列进行进一步处理。 该文件可以是 CSV / FIX 格式。我计划使用Spring批处理来实现相同的目的。 我阅读了有关 MultiResourcePartitioner 的信息,该信息用于在我们使用 spring batch 时读取大文件。

在这种情况下使用 spring batch 是个好主意吗?还是应该使用普通的Java代码读取大文件?还是针对这种情况还有其他更好的方法?

1 个答案:

答案 0 :(得分:1)

出于某些原因,我认为Spring Batch是您的用例的不错选择:

  • 您可以直接使用FlatFileItemReaderJmsItemWriter(与使用纯Java自己编写代码相比)
  • 您将有几个缩放选项(见下文)
  • 面向块的处理模型适用于像您的用例这样的大型数据集
  • 和许多其他免费功能(事务管理,可重新启动性等)

将输入文件物理划分为多个资源并使用MultiResourcePartitioner对于您的用例确实是一个不错的选择。但是,这不是在Spring Batch中扩展面向块的步骤的唯一方法,您还可以使用:

先前的3种扩展技术是在单个JVM中实现的。还有其他选项可用于跨多个JVM扩展批处理作业,例如远程组块和远程分区(但在您的用例中,IMO不需要这些)。

您可以在此处找到有关所有这些缩放技术的讨论以及代码示例:https://www.youtube.com/watch?v=J6IPlfm7N6w

希望这会有所帮助。