反应器迭代通量直到不为空

问题描述 投票:0回答:1

我有带有字符串值的反应堆通量,我迭代每个值并检查数据库中是否存在给定值。 我想迭代每个值,直到在数据库中找到该值。 如果没有找到(在所有迭代之后)我想返回 Mono 空。 现在,即使我的 alldogs Flux 包含 3 个值,我也会在一次迭代后将 Mono 清空。

信息:我将狗名称放入反应器上下文中,因为它由存储库使用。

这是我的函数的代码块:

        return myService.getAllDogs()
                .flatMap(dogName -> Mono.deferContextual(Mono::just)
                        .contextWrite(ctx -> ctx.put(DOG_KEY, dogName))
                )
                .then(dogReactRepo.findByName(name))
              
      
java project-reactor
1个回答
0
投票

根据您的解释,应该是:

return myService.getAllDogs()
    .flatMap(dogReactRepo::findByName, 1)
    .next()

因为

flatMap
并行进行多个订阅,所以最好通过设置
1
并发来限制它,因为您始终知道您不需要更多订阅。否则你可以跳过它,尽管它可能会导致不必要的查询。

© www.soinside.com 2019 - 2024. All rights reserved.