在spring-batch中,出现chunk错误时如何获取异常?

In spring-batch, how can I get the exception when there is a chunk error?

Spring 批处理提供了一个侦听器,用于在发生块错误时进行捕获(@AfterChunkError 注释或 ChunkListener.afterChunkError 接口)。两者都收到 ChunkContext 并且 API 表示:

Parameters:

context - the chunk context containing the exception that caused the underlying rollback.

但是,我在 ChunkContext 界面上没有看到任何可以使我出现异常的内容。如何从 ChunkContext 获取相关异常?

您可以实施一个或多个 ItemReadListener, ItemProcessListener and ItemWriteListener (or more simply ItemListenerSupport).

而不是实施 ChunkListener

他们分别授予访问权:

void onReadError(java.lang.Exception ex)
void onProcessError(T item, java.lang.Exception e)
void onWriteError(java.lang.Exception exception, java.util.List<? extends S> items)

我知道这会迫使您实施多种方法来管理块的各个方面,但您可以编写一个自定义方法,该方法采用 Exception 并从这 3 个方法中调用它。

异常位于 ChunkListener.ROLLBACK_EXCEPTION_KEY 属性中:

context.getAttribute(ChunkListener.ROLLBACK_EXCEPTION_KEY)