使用 spring 批处理读取大文件并发送到 jms 队列

Read large files and send to jms queue using spring batch

我有一个场景可以读取一个巨大的文件并将记录发送到 jms 队列以进行进一步处理。 该文件可以是 CSV/FIX 格式。我打算使用 Spring 批处理来实现相同的目的。 当我们使用 spring batch.

时,我读到了 MultiResourcePartitioner 用于读取大文件

在这种情况下使用 spring batch 是个好主意吗?或者我应该使用纯 java 代码来读取大文件吗?或者对于这种情况还有其他更好的方法吗?

我认为 Spring 批处理是您用例的不错选择,原因有以下几个:

  • 您可以使用开箱即用的 FlatFileItemReaderJmsItemWriter(与使用普通 Java 自己编写此代码相比)
  • 您将有多个缩放选项(见下文)
  • 面向块的处理模型适用于像您的用例中的大型数据集
  • 以及许多其他免费功能(事务管理、可重启性等)

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

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

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

希望对您有所帮助。