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

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

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


编辑以回复评论:

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

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

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

Spring Batch Admin

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

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