助焊剂完成后获取助焊剂尺寸

时间:2018-08-01 20:55:45

标签: java kotlin spring-webflux reactor-netty

我有点琐碎的任务:每当我使用响应式Spring WebClient查询外部API或查询响应式MongoDBRepository时,我想记录通过通量获得多少个实体。记录诸如“在数据库中找到n条记录”之类的消息。例如:

return repository.findAll()
                 .doOnComplete { log.info("Found total n records!") } // how to get the n?
                 .filter { it.age > 10 }
                 .distinct { it.name }

TLDR:完成后如何获得流量大小(也许是内容)?

3 个答案:

答案 0 :(得分:0)

通过调用count()。当观察到onComplete时,它应该发出Mono。

答案 1 :(得分:0)

您可以使用ConnectableFlux。在您的示例中:

var all = repository.findAll()
             .filter { it.age > 10 }
             .distinct { it.name }
             .publish()
             .autoConnect(2)

all.count()
   .subscribe {c -> log.info("Found total {} records!", c)}

return all;

答案 2 :(得分:-1)

这就是我所做的,

AtomicInteger i = new AtomicInteger();
Flux<UserDetails> stringFlux =
                Flux.using(() -> stringStream, Flux::fromStream,
                Stream::close)
                        .doOnNext(s -> i.getAndIncrement())
                        .log()
                        .map(UserDetails::createUserDetails);

stringFlux
                .subscribe(updateUserDetailsService::updateUserDetails);

log.info("number of records: {}", i);
相关问题