是否可以访问知道外部作业(执行)ID的JobParameters?

时间:2019-11-22 16:15:42

标签: spring-batch

假设我想构建一个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'   找不到。

1 个答案:

答案 0 :(得分:1)

我将回答您的问题,然后为您提供有关如何操作的想法。

  

A。我对此设计的第一个问题是:应该使用JobRepository来保留作业有效负载,而不是在自定义的JpaRepository中进行操作吗?

这取决于请求有效负载。作业存储库应该足以存储作业元数据。

  

B。我想访问某个作业的JobParameters(按作业ID,当作业通过JobExecution提交给JobLauncher时,该ID会返回;这是标准的Spring Batch东西)。

给出工作执行ID,您可以使用JobOperator#getParameters(Long executionId)

获取参数

现在,以下是我如何实现您的要求:

  

假设我想构建一个API,用于(1)提交要执行的作业,(2)稍后获取其结果/状态。