Spring批处理提供了一个侦听器,用于捕获何时发生块错误(@AfterChunkError批注或ChunkListener.afterChunkError接口)。两者都接收ChunkContext,API说:
参数:
context
- 包含导致该异常的异常的块上下文 潜在的回滚。
但是,我没有在ChunkContext界面上看到任何可以让我接受异常的内容。如何从ChunkContext到相关的异常?
答案 0 :(得分:1)
您可以实施ItemReadListener
,ItemProcessListener
和ItemWriteListener
(或更简单地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个方法中调用它。
答案 1 :(得分:1)
异常位于ChunkListener.ROLLBACK_EXCEPTION_KEY
属性中:
context.getAttribute(ChunkListener.ROLLBACK_EXCEPTION_KEY)