Spring 批处理 - 使用异步作业检索异常
Spring Batch - retrieve exceptions with async job
我正在使用异步 JobLauncher 在 Spring 批处理中配置一个(长 运行)作业,并且我有两个 REST 端点:
- /start --> 将异步启动作业并且 return job_execution_id 到客户端
- /status/{job_execution_id} --> 将 return 作业执行的状态基于存储在 JobExecutionContext
中的数据
在/status 端点中,我想通知客户端在此过程中发生的任何异常。
但是,我无法像处理同一作业的同步版本那样检索它们:
jobExecution.getAllFailureExceptions() --> empty list
stepExecution.getFailureExceptions() --> empty list
有没有办法告诉 Spring Batch 存储异常堆栈跟踪(或至少是异常消息),以便我稍后检索它?
谢谢
朱利奥
作业执行完成后添加失败异常(更准确地说right before作业即将完成)。所以他们在工作 运行 期间不可用。这就是为什么当作业在后台异步 运行 时调用 /status
端点时无法获取它们的原因。
这同样适用于步骤失败异常,但这些异常应该在步骤完成后立即可用(而最终的后续步骤仍然是 运行 以及周围的作业)。
我正在使用异步 JobLauncher 在 Spring 批处理中配置一个(长 运行)作业,并且我有两个 REST 端点:
- /start --> 将异步启动作业并且 return job_execution_id 到客户端
- /status/{job_execution_id} --> 将 return 作业执行的状态基于存储在 JobExecutionContext 中的数据
在/status 端点中,我想通知客户端在此过程中发生的任何异常。 但是,我无法像处理同一作业的同步版本那样检索它们:
jobExecution.getAllFailureExceptions() --> empty list
stepExecution.getFailureExceptions() --> empty list
有没有办法告诉 Spring Batch 存储异常堆栈跟踪(或至少是异常消息),以便我稍后检索它?
谢谢 朱利奥
作业执行完成后添加失败异常(更准确地说right before作业即将完成)。所以他们在工作 运行 期间不可用。这就是为什么当作业在后台异步 运行 时调用 /status
端点时无法获取它们的原因。
这同样适用于步骤失败异常,但这些异常应该在步骤完成后立即可用(而最终的后续步骤仍然是 运行 以及周围的作业)。