Spring Batch:如何监视当前正在运行的作业并在jsp页面上显示进度

Dan*_*ush 2 java spring-mvc batch-processing spring-batch

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

Adr*_*hum 6

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


编辑以回复评论:

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

通过这样做,您将使用进度信息不断更新步骤执行上下文,因此您可以使用 JobExplorer 和 JobOperator 来获取作业执行 -> 步骤执行 -> 步骤的执行上下文以用于您的进度报告目的。


Vic*_*cky 5

您应该看看spring批处理管理应用程序.

Spring Batch Admin

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

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