【问题标题】:Spring Batch Remote PartitioningSpring Batch 远程分区
【发布时间】:2019-04-15 19:44:23
【问题描述】:

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

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

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

提前感谢您的意见!

【问题讨论】:

  • DeployerPartitionHandler 是 Spring Cloud Task 项目的一个 API。我建议您将此问题标记为spring-cloud-task,以便 SCT 团队的人员可以帮助您。
  • 谢谢!我刚刚添加了spring-cloud-task 标签

标签: java spring-boot spring-batch spring-cloud-task


【解决方案1】:

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

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

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

如果某个工作进程由于某些外部原因变得无响应会怎样?

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

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

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

【讨论】:

  • 谢谢!详情。它澄清了我的疑虑,确实有助于理解这个过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2021-04-13
相关资源
最近更新 更多