【问题标题】:Spring batch : get actual item in write error listener while using Async item processorSpring批处理:在使用异步项目处理器时在写入错误侦听器中获取实际项目
【发布时间】:2017-05-14 13:17:00
【问题描述】:

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

onWriteError 方法签名是(Exception exception, List items)

问题: onWriteError 方法列表中的所有项目都是未来任务。如果我在未来的任务中调用“get”方法,它会给我同样的异常,导致写入错误。

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

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

【问题讨论】:

    标签: asynchronous listener spring-batch future


    【解决方案1】:

    你不能。仿佛时光倒流。这是AsyncItemProcessor/AsyncItemWriter 组合的缺点之一。正如 javadoc 在AsyncItemProcessor 中指出的那样:

    因为 Future 通常在 ItemWriter 中展开,所以有 生命周期和统计限制(因为框架不知道什么 处理器的结果是)。虽然不是一个详尽的清单,但事情 像 StepExecution.filterCount 不会反映过滤的数量 items 和 ItemProcessListener.onProcessError(Object, Exception) 将 不会被调用。

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 2021-08-31
      • 2021-11-19
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多