【问题标题】:Spring Cloud Task - Remote Partitioning ConcernsSpring Cloud Task - 远程分区问题
【发布时间】:2020-07-08 12:21:55
【问题描述】:

我们有 Spring Cloud Data Flow 本地设置,任务正在运行 Spring Batch 作业,该作业从数据库读取并写入 AWS S3,所有这些工作正常。

  1. 在停止 JOB 时,任务停止但无法恢复作业,因为状态为“STARTED”,我认为我们可以在代码中处理,方法是将批处理状态设置为“STOPPED”,当触发了停止,如果无法处理,请纠正我?
  2. 当尝试停止单个从属任务时,也会出现错误:

    2020-03-27 10:48:48.140 信息 11258 --- [nio-9393-exec-7] .s.c.d.s.s.i.DefaultTaskExecutionService : 任务执行停止请求 id 192 for platform default 已提交 2020-03-27 10:48:48.144 错误 11258 --- [nio-9393-exec-7] o.s.c.d.s.c.RestControllerAdvice : 捕获异常同时 处理请求

    java.lang.NullPointerException: null at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.cancelTask​​Execution(DefaultTaskExecutionService.java:669) ~[spring-cloud-dataflow-server-core-2.3.0.RELEASE.jar!/:2.3.0.RELEASE] 在 org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.lambda$stopTaskExecution$0(DefaultTaskExecutionService.java:583) ~[spring-cloud-dataflow-server-core-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]

  3. 我们如何在分布式环境中实现这一点,我们有一个主服务器,可以在主服务器上启动主服务器并在相应的从服务器上启动工作人员?

【问题讨论】:

    标签: spring spring-batch spring-cloud spring-cloud-dataflow spring-cloud-task


    【解决方案1】:

    1) 您是正确的,您需要将您的状态从 STARTED 更改为 FAILED。

    2) 由于远程分区使用 Spring Cloud Deployer(不是 Spring Cloud Data Flow)来启动工作任务,因此 SCDF 无法确定平台信息以正确停止工作任务。我添加了 GH Issue spring-cloud/spring-cloud-dataflow#3857 来解决这个问题。

    3) 当前实现阻止用户在多个服务器上启动,而是让平台(Kubernetes、Cloud Foundry)分配工作任务。您可以实现自己的部署器来添加此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多