在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)
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)