POST 到 /jobs/executions 没有响应执行 ID?
POST to /jobs/executions doesn't respond with an execution Id?
我已经通过 REST API 将我的应用程序与 spring XD 集成。
我为每个数据源设置并部署了作业定义(我的模块与 jdbc 相关),然后使用适当的作业定义作为模板启动特定作业,并在 POST 请求中提供 jobParameters,包含条件该工作独有 运行.
然后我希望我的 REST 客户端能够轮询与作业相关的指标,它刚刚初始化,但是对于这样的调用需要 jobExecutionId 而客户端没有这个值,只有 jobName 是当然不是唯一的。
我本以为 POST 到 /jobs/executions 会用一个 executionId 来响应,但它并没有让我质疑我使用 xd 的方式。
任何人都可以阐明这一点吗?
我同意你的看法;这似乎是一个疏忽...
/**
* Send the request to launch Job. Job has to be deployed first.
*
* @param name the name of the job
* @param jobParameters the job parameters in JSON string
*/
@RequestMapping(value = "", method = RequestMethod.POST, params = "jobname")
@ResponseStatus(HttpStatus.CREATED)
public void launchJob(@RequestParam("jobname") String name, @RequestParam(required = false) String jobParameters) {
...
}
我能看出问题;我们需要以某种方式将作业执行反馈给控制器方法(现在启动请求没有结果)。
有一个解决方法...
使用作业执行分路器将作业执行转储到某个接收器;见 job event tap documentation.
xd:>stream create --name jobex --definition "tap:job:myJob.job > file --name=exec --dir=/tmp" --deploy
这会将 jobExecution 信息写入 /tmp/exec。您可以在其中监视(而不是轮询 REST API)。
如果您处于分布式模式,您可以将数据转储到 Redis(或类似)接收器。
不过我同意,如果launch返回id就更好了
请打开一个JIRA Issue.
我已经通过 REST API 将我的应用程序与 spring XD 集成。 我为每个数据源设置并部署了作业定义(我的模块与 jdbc 相关),然后使用适当的作业定义作为模板启动特定作业,并在 POST 请求中提供 jobParameters,包含条件该工作独有 运行.
然后我希望我的 REST 客户端能够轮询与作业相关的指标,它刚刚初始化,但是对于这样的调用需要 jobExecutionId 而客户端没有这个值,只有 jobName 是当然不是唯一的。
我本以为 POST 到 /jobs/executions 会用一个 executionId 来响应,但它并没有让我质疑我使用 xd 的方式。
任何人都可以阐明这一点吗?
我同意你的看法;这似乎是一个疏忽...
/**
* Send the request to launch Job. Job has to be deployed first.
*
* @param name the name of the job
* @param jobParameters the job parameters in JSON string
*/
@RequestMapping(value = "", method = RequestMethod.POST, params = "jobname")
@ResponseStatus(HttpStatus.CREATED)
public void launchJob(@RequestParam("jobname") String name, @RequestParam(required = false) String jobParameters) {
...
}
我能看出问题;我们需要以某种方式将作业执行反馈给控制器方法(现在启动请求没有结果)。
有一个解决方法...
使用作业执行分路器将作业执行转储到某个接收器;见 job event tap documentation.
xd:>stream create --name jobex --definition "tap:job:myJob.job > file --name=exec --dir=/tmp" --deploy
这会将 jobExecution 信息写入 /tmp/exec。您可以在其中监视(而不是轮询 REST API)。
如果您处于分布式模式,您可以将数据转储到 Redis(或类似)接收器。
不过我同意,如果launch返回id就更好了
请打开一个JIRA Issue.