Spring 批处理 - 使用异步作业检索异常

Spring Batch - retrieve exceptions with async job

我正在使用异步 JobLauncher 在 Spring 批处理中配置一个(长 运行)作业,并且我有两个 REST 端点:

  1. /start --> 将异步启动作业并且 return job_execution_id 到客户端
  2. /status/{job_execution_id} --> 将 return 作业执行的状态基于存储在 JobExecutionContext
  3. 中的数据

在/status 端点中,我想通知客户端在此过程中发生的任何异常。 但是,我无法像处理同一作业的同步版本那样检索它们:

   jobExecution.getAllFailureExceptions() --> empty list
   stepExecution.getFailureExceptions()  --> empty list

有没有办法告诉 Spring Batch 存储异常堆栈跟踪(或至少是异常消息),以便我稍后检索它?

谢谢 朱利奥

作业执行完成后添加失败异常(更准确地说right before作业即将完成)。所以他们在工作 运行 期间不可用。这就是为什么当作业在后台异步 运行 时调用 /status 端点时无法获取它们的原因。

这同样适用于步骤失败异常,但这些异常应该在步骤完成后立即可用(而最终的后续步骤仍然是 运行 以及周围的作业)。