Spring将远程分区批处理到多个应用程序实例



我正在使用spring-batch进行远程分区。。我有多个spring批处理应用程序实例正在运行。作为用例的一部分,我需要处理数据库中的所有记录。所以我将实例分配给每个记录。。因此,批处理应用程序的每个实例都可以处理特定于实例的记录。

例如

Records1 -: instance1
Records2 -: instance1
Records3 -: instance2
Records4 -: instance2
.... so on

我知道我们可以使用Kafka或JMS,而不是显式分区。在我的用例中,我不想使用任何消息中间件。因此,在为每个记录分配实例之后。我想调用这两个实例。如何调用这两个实例?

您仍然需要一个消息中间件来实现远程分区。这是管理器步骤向辅助步骤发送StepExecutionRequest所必需的。

如果您真的想避免使用消息中间件,可以为每个记录集创建一个作业实例。根据你的例子,这可以设计如下:

  • 作业实例1->记录1和记录2
  • 作业实例2->记录3和记录4
  • 等等

这些作业实例可以在同一JVM的不同线程中本地执行,或者在同一机器上的不同JVM中本地执行或在集群中的不同机器上远程执行。并行度仅取决于集群中可用的资源。您可以在一台机器上拥有多个JVM,其中每个JVM并行运行多个作业实例。然后,您可以在不同的机器上复制该设置,并根据您的要求实现高水平的并行性。

最新更新