对/ jobs / executions的POST没有响应执行ID?

时间:2015-02-28 16:26:08

标签: spring-xd

我已经通过REST API将我的应用程序与spring XD集成在一起。 我为每个数据源设置并部署了作业def(我的模块与jdbc相关),然后使用相应的作业def作为模板,使用POST请求中提供的jobParameters启动特定作业,其中包含该作业运行唯一的条件。 p>

然后我希望我的REST客户端能够轮询与作业相关的指标,它只是初始化,但是对于这样的调用需要jobExecutionId并且客户端没有这个值,只有jobName当然不是唯一的。

我原本期望POST对/ jobs / execution使用executionId进行响应,事实上它不会让我质疑我使用xd的方式。

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

我同意你的意见;这似乎是一种疏忽......

/**
 * 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.out,您可以监控它(而不是轮询REST API)。

如果您处于分布式模式,则可以将数据转储到Redis(或类似的)接收器。

但我同意,如果发布会返回id,那会更好。

请打开JIRA Issue