【发布时间】:2020-11-23 16:12:09
【问题描述】:
我有一个应用程序,客户端发送 HTTP 请求,这些请求被翻译成 Spring 批处理作业参数并触发作业。我为响应生成一个correlationId 以及作业执行的结果。
此时我无法获得正在运行的作业的Job_Execution_Id。
获取它的方法是如果我查询以correlationId 作为键/值的BATCH_JOB_EXECUTION_PARAM 表,那么我使用条件进行查询:
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"
}
}
}
我知道 jobexection 和 stepexecution 在春季批次中有一些 dao 类。我想知道的是,是否有一种方法可以通过自定义查询或弹簧批处理框架中已经存在的 dao 方法一次性获取作业执行和当前步骤执行的详细信息并插入我的响应?所有这一切都来自我的客户在端点 GET /status/{correlationId} 中调用的一个简单的correlationId
这个link 给了我一些知识,但正在查询我的客户没有的作业执行ID,而且currentStep 也没有任何关于它的状态
我不是通过作业执行 ID 来驱动这一切,因为我的作业可以异步触发,我需要立即使用相关 ID 做出响应。
【问题讨论】:
标签: java spring spring-batch