首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Flux完成时获取Flux大小

在Flux完成时获取Flux大小
EN

Stack Overflow用户
提问于 2018-08-02 04:55:45
回答 3查看 8.4K关注 0票数 4

我有点纠结于一个琐碎的任务:每当我用reactive spring WebClient或query reactive MongoDBRepository查询外部API时,我都想记录有多少实体通过了我的flux,例如。以记录类似“在数据库中找到n条记录。”的消息。例如:

代码语言:javascript
复制
return repository.findAll()
                 .doOnComplete { log.info("Found total n records!") } // how to get the n?
                 .filter { it.age > 10 }
                 .distinct { it.name }

TLDR:如何在完成时获取流量大小(也许还有它的内容)?

EN

回答 3

Stack Overflow用户

发布于 2019-07-16 00:46:32

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

代码语言:javascript
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2018-08-02 05:10:42

通过调用count()。当观察到onComplete时,它应该发出一个单声道。

票数 2
EN

Stack Overflow用户

发布于 2021-02-23 17:27:03

这是我所做的,

代码语言:javascript
复制
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);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51642123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档