gpt4 book ai didi

spring-boot - Spring Batch 分页阅读器和异常处理

转载 作者:行者123 更新时间:2023-12-04 03:17:54 66 4
gpt4 key购买 nike

我们创建了一个自定义项目阅读器,它扩展了 AbstractPaginatedDataItemReader。 Spring-batch 允许管理哪些异常停止或不停止作业(跳过的异常)。

在“经典的”spring-batch 阅读器中,doRead 方法会抛出任何 Exception。这意味着,如果在读取期间抛出跳过的异常,则跳过该项目并且作业继续运行。

但是在分页阅读器中,用于检索下一个数据页的doPageRead 方法不会抛出任何异常:

protected abstract Iterator<T> doPageRead();

doPageRead 方法由doRead 调用:

protected T doRead() throws Exception {

synchronized (lock) {
if(results == null || !results.hasNext()) {

results = doPageRead();

page ++;

if(results == null || !results.hasNext()) {
return null;
}
}


if(results.hasNext()) {
return results.next();
}
else {
return null;
}
}
}

由于 doPageRead 方法没有声明任何抛出的异常,这意味着配置的跳过异常只能是 RuntimeException?

谢谢

最佳答案

无论是分页阅读器还是非分页阅读器,Spring Batch 阅读器最终都是 ItemReader。这最终意味着它会将单个项目移交给处理器,read() 方法契约才是最重要的。

分页阅读器只是对他们实际阅读项目的方式进行了优化,但与常规的非分页阅读器没有什么不同。

所以在我看来,您寻找 doReadPage() 方法似乎是不必要的,重要的是 read() 方法契约。

如果您遇到任何问题(并且您的问题中并不清楚),请告诉我。

关于spring-boot - Spring Batch 分页阅读器和异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090554/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com