[英]spring batch provide status of job execution and step information
我有一个应用程序,客户端发送 HTTP 请求,这些请求被翻译成 Spring 批处理作业参数并触发作业。 我为响应生成一个correlationId
以及作业执行的结果。
此时我无法获取运行的作业的Job_Execution_Id
。
获取它的方法是如果我查询BATCH_JOB_EXECUTION_PARAM
表,其中correlationId
作为键/值,所以我查询条件:
where KEY_NAME='correlationId' AND STRING_VAL='12345'
这给了我JOB_EXECUTION_ID
。
从这里我想向我的客户提供正在运行/或正在运行的作业的完整详细信息,包括当前步骤的详细信息及其状态。 所以 json 有效载荷应该是这样的:
{
"correlationId": "2ae16a63-7e91-4e37-942a-cf7f66117014",
"jobDetails": {
"id": 1,
"jobId": 1,
"jobName": "BLA BLA",
"startTime": "2018-12-23T18:19:13.185",
"endTime": "2018-12-23T18:19:13.223",
"exitCode": "COMPLETED",
"exitDescription": "",
"status": "COMPLETED",
"exceptions": [],
"currentStep": "copyingAFile",
"currentStepStatus": "RUNNING"
},
"_links": {
"self": {
"href": "http://localhost:8080/status/2ae16a63-7e91-4e37-942a-cf7f66117014"
}
}
}
我知道 spring 批处理中有一些dao
类用于jobexection
和stepexecution
。 我想知道的是,是否有一种方法可以通过自定义查询或 spring 批处理框架中已存在的 dao 方法一次性获取作业执行和当前步骤执行的详细信息并插入我的响应中? 所有这些都来自我的客户端在端点GET /status/{correlationId}
中调用的一个简单的 correlationId
这个链接给了我一些知识,但正在查询我的客户不会有的作业执行 ID,也没有关于currentStep
和它的状态
我不是通过作业执行 ID 来驱动所有这些,因为我的作业可以异步触发,为此我需要立即使用 correlationId 进行响应。
我相信您不需要那个correlationId
。 如果您在作业启动器上设置异步任务执行器,作业启动器将立即返回一个 jobExecution,您可以将其返回给客户端,请参阅Running Jobs from within a Web Container 。
现在有了从GET /status/{jobExecutionId}
获得的作业执行 ID,您可以使用JobExplorer#getJobExecution
获取JobExecution
及其步骤执行(使用JobExecution#getStepExecutions()
,并找出当前正在运行的步骤stepExecution.getStatus().isRunning()
有了它,您应该能够返回您的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.