假设我想构建一个API,用于(1)提交要执行的作业,(2)稍后获取其结果/状态。
现在,提交端点将收到一个有效负载和一些标头。有效负载通过自定义JpaRepository保留,并将标头推入JobParameters实例(然后将其馈送到JobLauncher)。据我到目前为止所知,有一个JobRepository最终将保留我的JobParameters。
A。我对此设计的第一个问题是:应该使用JobRepository来保留作业有效负载,而不是在自定义的JpaRepository中进行操作吗?
B。我想访问某个作业的JobParameters(按作业ID,当作业通过JobExecution提交给JobLauncher时,该ID会返回;这是标准的Spring Batch东西)。
从普通bean(@Service类)可以做到这一点吗?
JobRepository不会公开访问作业ID的任何内容,并返回与此ID相关的作业参数。
有一个JobExecutionDao,有一个执行ID,可以给我访问JobParameters的权限,但是我无法将其注入到我的bean中。
构造函数中的参数<#>必须为类型Bean 'org.springframework.batch.core.repository.dao.JobExecutionDao' 找不到。
答案 0 :(得分:1)
我将回答您的问题,然后为您提供有关如何操作的想法。
A。我对此设计的第一个问题是:应该使用JobRepository来保留作业有效负载,而不是在自定义的JpaRepository中进行操作吗?
这取决于请求有效负载。作业存储库应该足以存储作业元数据。
B。我想访问某个作业的JobParameters(按作业ID,当作业通过JobExecution提交给JobLauncher时,该ID会返回;这是标准的Spring Batch东西)。
给出工作执行ID,您可以使用JobOperator#getParameters(Long executionId)
获取参数现在,以下是我如何实现您的要求:
假设我想构建一个API,用于(1)提交要执行的作业,(2)稍后获取其结果/状态。