Spring批处理:在使用异步项处理器

时间:2017-05-14 13:17:01

标签: asynchronous listener spring-batch future

申请背景 我正在使用异步项处理器并将委托作为复合处理器传递。当我在处理器中遇到异常时,我的写错误监听器被调用。

onWriteError方法签名是(异常异常,列表项)

问题: 列表中onWriteError方法的所有项都是Future任务。如果我打电话给#34;得到"对于将来任务的方法,它给出了导致写入错误的相同异常。

如何在异步执行期间获取编写器侦听器方法中的原始项?

我无法提供任何实际代码,因为我的公司政策禁止我在在线论坛上发布代码。

1 个答案:

答案 0 :(得分:0)

你不能。这就像回到过去一样。这是AsyncItemProcessor/AsyncItemWriter组合的缺点之一。正如javadoc在AsyncItemProcessor中指出的那样:

  

因为Future通常在ItemWriter中解包,所以有   生命周期和统计数据限制(因为框架不知道什么   处理器的结果是)。事情并非详尽无遗   像StepExecution.filterCount一样不会反映过滤的次数   items和ItemProcessListener.onProcessError(Object,Exception)将会   不被称为。