Spring 批量远程分区

Spring Batch Remote Partitioning

我想了解远程分区期间 DeployerPartitionHandlerDeployerStepExecutionHandler 之间的集成。

多个worker时父任务执行的开始时间、结束时间、执行状态如何更新?

如果某个工作进程由于某些外部原因变得无响应,会发生什么情况?有没有办法以编程方式处理这种情况?即,杀死无响应的进程并使该步骤失败。

在此先感谢您的投入!!

您在这里有很多问题,所以让我一次回答一个问题。

多个worker时父任务执行的开始时间、结束时间、执行状态如何更新?

此架构中的所有组件都是任务。 parent 是一个任务,worker 是每个任务,所以它们都独立更新任务存储库。父应用程序将在任务开始时标记开始时间(在调用任何 CommandLineRunnerApplicationRunner 实现之前)。它将在所有工作人员完成后更新结束时间和结果(因为远程分区步骤在所有工作人员完成或超时之前不会完成)。

如果某个工作进程由于某些外部原因变得无响应,会发生什么情况?

DeployerPartitionHandler 使用的部署程序依赖于用于生产的平台(CloudFoundry、Kubernetes 等)。这些平台中的每一个都以自己的方式处理挂起的进程,因此这个问题的答案确实是特定于平台的。在大多数情况下,如果某个进程被识别为不健康(根据平台使用的任何定义),它将被关闭。

有没有办法以编程方式处理这种情况?即,杀死无响应的进程并使步骤失败。

如果一个分区在执行过程中出现故障,父分区也会被标记为失败并可以重新启动。重新启动时(默认情况下),只有失败的分区会重新 运行。任何已经完成的分区将不会被重新执行。