我想知道如何监控当前正在运行的批处理作业的状态。我的作业基本上是处理具有一些默认步骤的文件夹,所以我想逐步向用户显示进度。我正在使用Tasklets和数据库作业存储库。使用一些示例代码来解释实现这一点会更有帮助 谢谢。
答案 0 :(得分:5)
您应该看一下spring batch admin应用程序。
直接引用:这是一个常规战争档案。部署完成后,您可以使用Web浏览器进行浏览(例如localhost:8080 / spring-batch-admin-sample),并查看启动作业和检查作业执行的功能。
当然,通过一些修改,您可以实现自己的要求。
答案 1 :(得分:4)
如果您想开发自己的监控应用/网页,可能需要查看JobExplorer
或JobOperator
界面。它为您提供了获取JobExecutions的方法,在JobExecutions中,您可以获得StepExecutions。所有这些都可以为您提供工作状态和内部的各个步骤。
编辑以回复评论:
对于引用的进度信息,它不是存储在Spring Batch中的内容。但是,两个界面DO可以帮助您。首先将进度信息存储在步骤执行上下文中。然后确保您的tasklet未实现为同步任务。你必须返回CONTINUABLE(原谅我,如果我混淆了这个术语,我曾经有一段时间使用过Spring Batch),所以你的tasklet将被Spring批量连续调用。 (这可以通过多种方式完成,要么将您的工作分解为片段,要么每次调用tasklet execute(),您只处理它们中的一部分并且仅在完成所有部分时返回FINISHED,否则您可能会生成另一个线程做这项工作,你的tasklet只是监控进度等。)
通过这样做,您将使用您的进度信息不断更新步骤执行上下文,因此您可以使用JobExplorer和JobOperator来获取作业执行 - >步骤执行 - >步骤的执行上下文用于进度报告目的。
答案 2 :(得分:0)
Spring Batch ver 4.2附带了基于Micrometer的批次监控和指标捕获。您可以尝试利用它们。 下表列出了一些指标
Spring Batch还使您能够创建自己的指标。您可以在https://docs.spring.io/spring-batch/4.2.x/reference/html/monitoring-and-metrics.html#custom-metrics
处查看更多详细信息