- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 try catch 由于唯一键冲突而无法插入数据库的项目。经过“无处不在”的研究后,令人沮丧的是,这开始让人感觉像是未修复的错误或其他什么东西。老实说,我需要一个有用的澄清。
编辑:已访问here跳过使用 @OnSkipInWrite
捕获的异常,这要么不够清晰,要么不起作用。
@Bean
public PersonFailureLoggerListener loggerListener() {
return new PersonFailureLoggerListener();
}
@Bean
public Step step1(JdbcBatchItemWriter<Person> writer) throws MalformedURLException {
return stepBuilderFactory.get("step1")
.<Person, Person>chunk(10)
.reader(reader())
.faultTolerant().skipPolicy(fileVerificationSkipper())
.processor(itemProcessor())
.writer(writer)
//.listener(new PersonWriteListener())
.listener(loggerListener().asItemProcessListener())
.build();
}
项目监听器支持:
@Component
public class PersonFailureLoggerListener extends ItemListenerSupport<Person, Person> {
private static final Logger LOG = LoggerFactory.getLogger(Person.class.getSimpleName().concat(".error"));
@Override
public void afterProcess(Person i, Person o) {
LOG.info("before: {}, after: {}", i.toString(), o.toString());
}
@Override
public void onWriteError(Exception excptn, List<? extends Person> list) {
LOG.debug("list[{}] threw write exception", list.size(), excptn);
}
@Override
public void onReadError(Exception excptn) {
LOG.debug("encountered error on read", excptn);
}
public ItemProcessListener<Person, Person> asItemProcessListener() {
return this;
}
}
更新 PersonFailureLoggerListener
:
@OnSkipInWrite
public void onSkipInWrite( Person skippedItem, Exception exception ){
LOG.debug("skipped person: {}", skippedItem.toString());
}
最佳答案
Edit: Visited here to have skipped exceptions captured using @OnSkipInWrite and this is either not clear enough or just wont work.
答案建议使用 SkipListener
但您要在此处注册 ItemProcessListener
:
.listener(loggerListener().asItemProcessListener())
这是两个不同的监听器,在步骤生命周期的不同点调用。要监听跳过的项目,您应该注册一个 SkipListener
:
class MySkipListener extends SkipListenerSupport {
@Override
public void onSkipInWrite(Object item, Throwable t) {
// TODO do something with skipped items
}
}
@Bean
public Step step() {
return stepBuilderFactory.get("step")
// .. step config
.listener(new MySkipListener())
.build();
}
关于java - 在步骤中实现 writer 时出现 Spring Batch : onWriteError in ItemWriteListener won't be reached on org. springframework.dao.DuplicateKeyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422661/
我正在围绕 Spring Batch 制作 POC SkipListener和 ItemWriteListener因为我的业务需要它,而我只需要那样。 Spring 批次ItemWriteListen
我正在 try catch 由于唯一键冲突而无法插入数据库的项目。经过“无处不在”的研究后,令人沮丧的是,这开始让人感觉像是未修复的错误或其他什么东西。老实说,我需要一个有用的澄清。 编辑:已访问he
我是一名优秀的程序员,十分优秀!