Java 当焊剂完成时获取焊剂尺寸
我被一项琐碎的任务困住了:每当我用reactive spring WebClient查询外部API或查询reactive MongoDBRepository时,我都想记录通过我的流量得到了多少实体,例如记录“在数据库中找到n条记录”这样的消息。例如: TLDR:如何在完成时获得通量大小(可能还有它的内容)?通过调用。当观察到onComplete时,它应发出单声道 您可以使用。在您的示例中: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 {
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);