2

我想知道如何监控我当前正在运行的批处理作业的状态。我的作业基本上是处理带有一些默认步骤的文件夹,所以我想逐步向用户显示进度。我正在使用TaskletsDB Job Repository。用一些解释实现这一点的示例代码将更有帮助。
谢谢你。

4

3 回答 3

6

如果您想开发自己的监控应用程序/网页,您可能需要查看JobExplorerorJobOperator界面。它为您提供了获取 JobExecutions 的方法,并且在 JobExecutions 中,您可以获取 StepExecutions。所有这些都为您提供了工作的状态和内部的各个步骤。


编辑以回复评论:

对于引用的进度信息,它不是存储在 Spring Batch 中的东西。但是,这两个界面确实可以帮助您。首先将进度信息存储在步骤执行上下文中。然后确保你的 tasklet 没有被实现为同步任务。你必须返回 CONTINUABLE (如果我混淆了这个术语,请原谅我,我以前使用 Spring Batch 已经有一段时间了),这样你的 tasklet 将被 Spring Batch 连续调用。(这可以通过多种方式完成,或者您将工作分成几部分,并且每次调用 tasklet execute(),您只处理其中一个部分并仅在所有部分完成时返回 FINISHED,或者您可以生成另一个线程做这项工作,你的 tasklet 只是监控进度等)。

通过这样做,您将使用进度信息不断更新步骤执行上下文,因此您可以使用 JobExplorer 和 JobOperator 获取 Job Execution -> Step Execution -> Step's Execution Context 以用于进度报告。

于 2012-11-27T09:58:16.840 回答
5

你应该看看 spring 批处理管理应用程序。

春季批处理管理员

直接引用:这是一个常规的战争文件。部署后,您可以使用 Web 浏览器(例如 localhost:8080/spring-batch-admin-sample)浏览并查看启动作业和检查作业执行的功能。

当然,通过一些修改,您可以实现自己的要求。

于 2012-11-27T06:29:07.087 回答
1

Spring Batch 4.2 版带有基于 Micrometer 的批处理监控和指标捕获。您可以尝试利用它们。下表列出了一些指标 春季批处理指标

Spring Batch 还使您能够创建自己的指标。您可以在此处查看更多详细信息https://docs.spring.io/spring-batch/4.2.x/reference/html/monitoring-and-metrics.html#custom-metrics

于 2019-06-26T22:11:33.987 回答