Java 当焊剂完成时获取焊剂尺寸

Java 当焊剂完成时获取焊剂尺寸,java,kotlin,spring-webflux,reactor-netty,Java,Kotlin,Spring Webflux,Reactor Netty,我被一项琐碎的任务困住了:每当我用reactive spring WebClient查询外部API或查询reactive MongoDBRepository时,我都想记录通过我的流量得到了多少实体,例如记录“在数据库中找到n条记录”这样的消息。例如: TLDR:如何在完成时获得通量大小(可能还有它的内容)?通过调用。当观察到onComplete时,它应发出单声道 您可以使用。在您的示例中: var all = repository.findAll() .filter {

我被一项琐碎的任务困住了:每当我用reactive spring WebClient查询外部API或查询reactive MongoDBRepository时,我都想记录通过我的流量得到了多少实体,例如记录“在数据库中找到n条记录”这样的消息。例如:

TLDR:如何在完成时获得通量大小(可能还有它的内容)?

通过调用。当观察到onComplete时,它应发出单声道

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

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;
这就是我所做的

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);
AtomicInteger i=新的AtomicInteger();
通量串通量=
使用(()->stringStream,Flux::fromStream,
流::关闭)
.doOnNext(s->i.getAndIncrement())
.log()
.map(UserDetails::createUserDetails);
stringFlux
.subscribe(updateUserDetails服务::updateUserDetails);
log.info(“记录数:{}”,i);

好的,这让我更接近了,但在那次操作之后,我将使用Mono,而我希望在通量上处理进一步的操作,保持它不变。换句话说,我想订阅onComplete of the flux,了解这个count。您可以自己保留计数(接收项目时递增)。我想不出更好的办法;如果您发现了,请更新。
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);