【问题标题】:How to check the status of a spring batch job whether an instance of the job is currently under execution through spring-batch-admin?如何通过spring-batch-admin检查spring批处理作业的状态是否该作业的实例当前正在执行?
【发布时间】:2016-09-19 13:36:26
【问题描述】:

我有一个要求,我使用 spring-batch-admin JSON api 创建了用于 spring-batch 监控的自定义 UI。我有一个要求,我不想让用户在该作业的实例当前正在进行时开始作业。

是否有任何 REST Url 可以为我提供作业实例的状态,无论作业是否正在进行?

有没有办法开发一个自定义的 REST url 来提供这个功能。

请帮忙。

【问题讨论】:

  • 使用 Spring Cloud Data Flow 代替 Spring Batch Admin 的任何选项?

标签: rest spring-batch spring-batch-admin


【解决方案1】:

从未使用过此 API,但来自此站点:http://docs.spring.io/spring-batch-admin/reference/json.html

您可以使用http://localhost:8080/sprin-batch-admin-sample/batch/jobs/job1.json 获取最后一个作业的状态(因此,如果有一个正在运行,则该作业正在运行)(用 job1 替换您的实际作业名称和服务器)。参数lastJobExecutionStatus 应该是STARTINGSTARTEDSTOPPING(如果它仍在运行)。

可能的状态列表(检查您的批处理版本):http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/BatchStatus.html#STARTING

请注意,作业可能会崩溃,使其处于类似STARTED 的状态。

编辑:在服务器端,您可以创建一个休息端点并使用 SynchronizedJobLauncher 类“全局同步作业,以便一次只能激活给定作业的一次执行”。 (http://docs.spring.io/spring-batch-admin/apidocs/org/springframework/batch/admin/launch/package-summary.html)。关于如何为 json 创建一个 rest 端点,以及如何注入 JobLauncher 有很多资源。

这里列出了其他可能性:http://docs.spring.io/spring-batch-admin/reference/reference.xhtml

【讨论】:

  • 如果我想在 spring-batch-admin 提供的其余 url 中添加额外的功能,我该怎么做?
  • 您可以更改 Spring 配置服务器端以更改 json API 行为(我的编辑中的第二行)或在 Java 服务器端创建自己的休息端点。
猜你喜欢
  • 2021-12-10
  • 2023-03-30
  • 2015-04-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2013-11-05
相关资源
最近更新 更多