java - 根据Web服务调用结果过滤Flux元素

标签 java spring-webflux project-reactor

在下面的代码中,我根据某些逻辑过滤通量中的元素,然后根据 Web 服务调用的结果进一步过滤。现在,Web 服务返回一个 Mono,因此我可以在过滤器方法中使用它。调用 block() 不起作用。有人可以如何解决这个问题吗?提前致谢。由于我删除了公司特定代码,该代码无法完全编译。

protected Flux<> getFilteredResults(Flux<> resultsToFilter, boolean someBoolean) {
        return resultsToFilter.filter(cr -> {
            //Filtering logic
        })
                .filter( a-> {
                    Mono<Boolean> serviceCallResult = makeServiceCall(a);
                    return serviceCallResult.block(); //HOW TO DO THIS CORRECTLY
                });

    }

最佳答案

在构建 react 流时,您应该避免阻塞filter 可用于应用同步逻辑。如果您需要应用返回 Mono 的异步函数 - 请使用 filterWhen

protected Flux<> getFilteredResults(Flux<> resultsToFilter, boolean someBoolean) {
    return resultsToFilter
            .filterWhen(a ->  makeServiceCall(a));

}

关于java - 根据Web服务调用结果过滤Flux元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72774283/

相关文章:

java - 如何指定 MongoDB 中多个表之间的 @CollectionTable 关系?

java - react 堆项目 : downstream is slow

java - Spring WebClient - 如何根据响应头延迟重试

java - 线程上下文切换是如何完成的?

reactive-programming - 无法从 START_ARRAY token 中反序列化 <Object> 的实例 - webClient

java - 如何去除图表周围的白色边框?

java - 如何将 Micrometer 计时器与 webflux 端点一起使用

spring-boot - 为什么 Flux 启动后不能使用 concatWith

java - 使用 Facebook 登录并通过相机拍摄照片并在自己的墙上分享

我可以使用 Java API 操作和修改 HTML 代码及其标签?