Java 被动。如何等待所有流动的数据然后处理它们

Java Reactive. How to wait for all data in flux and then process them

我正在从 mongo 反应性存储库获取数据并更新它。然后,我必须将所有数据收集到一个集合中,并将其传送到另一项服务以获取更多信息。然后我应该将它们映射到一个 Flux 中。我的代码是:

        Flux<Views> views = someRepository.findAllByUsersIn(userId).doOnNext(v -> {
        v.setInterlocutor(v.getUsers().stream().filter(u -> !userId.equals(u)).findFirst().orElse(null));
    });
    

    return Flux.zip(views.map(view -> conversionService.convert(view, ResponseViewDto.class)), getUserInfo(views).flux())
            .flatMap(fZip -> {
                ResponseViewDto dto = fZip.getT1();
                dto.setInterlocutor(fZip.getT2().get(dto.getInter()));
                return Flux.just(dto);
            });

getUserInfo 收集 usersId 并将它们发送到另一个服务和 returns 扩展信息。

我发现从数据库中获取调用了 2 次,我可以理解为什么,但是有没有任何解决方案可以做到一次并且仍然不阻塞。

感谢 Adhika Setya Pramudita 的帮助。做我需要的方法就是使用 cache() 方法