繁体   English   中英

响应主体中的Spring Batch作业执行状态

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM