Spring 5 Reactive - 为什么代码不占用CPU?

时间:2017-09-07 08:57:09

标签: mongodb spring-boot spring-data-mongodb project-reactor spring-webflux

我使用spring-webflux和mongodb-reactive驱动程序测试springboot 2.0.0.M3 并且不明白我的代码为什么不消耗CPU(低于2%)。 内存是可以的(70%用于32GB),I / O很低(硬盘是静默:)) 最后我有一个错误

  

引起:com.mongodb.MongoCursorNotFoundException:查询失败   错误代码-5和错误消息'未找到光标26041128255   server localhost:27017'在服务器localhost:27017

我怀疑它花了太长时间,10分钟后,它抛出了这个异常。

这里的代码:

usedKeyRepository.findAll()
   .buffer(4096).parallel()
   .concatMap(listUsedKey -> generatedKeyRepository.bulkFindGeneratedKeysByPub(listUsedKey.stream().map(u -> u.getPub()).collect(Collectors.toSet())))
   .subscribe(clefsTrouvees -> recordMatches(clefsTrouvees),
              ex -> LOG.error("my exception", ex)
);
private void recordMatches(GeneratedKey clefGeneree) {
   LOG.warn("clef : priv:{}\tpub:{}", clefGeneree.getPriv(), clefGeneree.getPub());
}

usedKeyRepository.findAll()方法是

@Autowired
private ReactiveMongoTemplate template;

public Flux<UsedKey> findAll() {
   return template.findAll(UsedKey.class);
}
public Flux<GeneratedKey> bulkFindGeneratedKeysByPub(final Collection<String> pub) {
   Query query = new Query(Criteria.where("pub").in(pub));
   return template.find(query, GeneratedKey.class);
}

我的集合usedKey包含8百万个doc,generatedkey包含6.5亿个。 有任何想法吗 ? : - /

0 个答案:

没有答案