[英]Spring Batch job execution status in response body
我是Spring Batch的新手,很困惑
我有一个带有一些请求映射的控制器。 当我获得某个URL时,我想将作业状态打印到响应正文中。 这是一些代码:
@RequestMapping(value = "/batchExecution", method = RequestMethod.GET)
@ResponseBody
public String getJobExecutionStatus() {
return "Hello world!";
}
我尝试将JobExecution添加到方法中,但是您只能使用JobExecutionListener访问这些元素吗?
@RequestMapping(value = "/batchExecution", method = RequestMethod.GET)
@ResponseBody
public String getJobExecutionStatus(JobExecution jobExecution) {
return "Hello world!";
}
对于我的noobie问题,我们感到抱歉,我找不到我所寻找的任何文档
为了解决这个问题,我可以在Pospolita Nikita对我的原始帖子的评论的帮助下回答自己的问题。
我使用流程方法实现了服务,然后在程序控制器中调用了该方法。 代码如下:
服务
@Override
public String process(Long jobId) throws Exception {
BatchStatus jobStatus = explorer.getJobExecution(jobId).getStatus();
LOGGER.info("The Job ID is: " + jobId);
LOGGER.info("The job status is: "+jobStatus);
return null;
}
控制者
@RequestMapping(value = "/batchMonitor/{id}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> process(@PathVariable("id") Long id) {
HttpHeaders responseHeaders = MccControllerUtils.createCacheDisabledHeaders();
responseHeaders.setContentType(MediaType.TEXT_HTML);
try {
LOGGER.info("Obtaining job by ID " + id);
String response = batchService.process(id);
return new ResponseEntity<>(response, responseHeaders, HttpStatus.OK);
} catch (Exception e) {
LOGGER.error("Error obtaining batch by ID " + id, e);
return new ResponseEntity<>(e.getMessage(), responseHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
希望这可以帮助其他人。 谢谢!
我建议您添加一个由控制器调用的服务,并在其中运行批处理作业,然后返回执行状态以将其返回
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.