我发现MongoItemReader存在一个奇怪的问题。 这是我一步的配置:
private Step addMnpInformation() throws Exception {
return stepBuilders.get("addMnpInformation")
.chunk(50)
.reader(stagedCdrReader())
.processor(addMnpProcessor())
.writer(stagedCdrWriter())
.build();
}
这是读者
@Bean
public MongoItemReader<StagedCdr> stagedCdrReader() throws Exception {
MongoItemReader reader = new MongoItemReader<StagedCdr>();
reader.setTemplate(stagingCdrTransactionManager);
reader.setQuery("{cdrStatus:'PENDING'}");
reader.setTargetType(StagedCdr.class);
HashMap<String,Direction> sort = new HashMap<String, Direction>();
sort.put("sequence", Direction.ASC);
reader.setSort(sort);
reader.setName("stagedCdrReader");
reader.afterPropertiesSet();
return reader;
}
似乎读者并没有阅读其他所有页面。我正在处理的记录有一个顺序Id,我发现它使用50页(可能是我的块大小)读取记录,但是这样:
从0到49 从100到149 从200到249 。 。
它没有阅读 从50到99 从150到199
滑雪的物品有多少取决于块物,例如块(50),然后50个物品会滑雪,我不知道为什么!
答案 0 :(得分:0)
罗宾?是你吗?
前一段时间我向Spring论坛发布了同样的问题并忘了它。 这就是它发生的原因:
我发现处理器正在将字段cdrStatus更改为COMPLETED。这样,当读者请求新页面并且它使用限制和跳过时,第一页的更改记录未包含在新页面请求中,因此跳过了“新”第一页并且未检索到记录。
我不知道这是否是预期的行为。您可以在此处找到该主题:http://forum.spring.io/forum/spring-projects/batch/129604-problems-with-mongoitemreader