Spring Webflux非阻塞依赖资源调用

费利克斯:

我正在使用Spring Webflux和Spring Data MongoDB Reactive。在我的REST控制器中,我试图从数据库(MongoDB)中获取所有类型的对象(例如,某品牌的所有自行车)。我当前的实现如下所示:

@GetMapping("/bybrand/{brandId}")
public Flux<Bike> bikesByBrand(@PathVariable(value = "brandId") String brandId) {
    return bikeRepository.findByBrand( //returns a Flux<Bike>
            brandRepository.findById(brandId) //returns a Mono<Brand>
                    .block() //returns a Brand
    );
}

为了保持反应式模式,我想避免使用block()调用。我尝试了map()和doOnSuccess()的各种组合,但没有找到正确的方法来做自己想做的事情。我在网上找到的示例或教程没有涵盖使用依赖调用数据库的用例。我如何避免在这里使用block()以及通过相关的先前调用访问数据库的黄金标准是什么?

我的另一种方法是以下方法。

brandRepository.findById(brandId)
            .doOnSuccess(brand -> bikeRepository.findByBrand(brand));

但是我找不到一种方法可以用高级方法最终返回lambda函数(Bike的Flux)的结果。

123:

您可以使用flatMapMany

return brandRepository.findById(brandId).flatMapMany(bikeRepository::findByBrand)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Spring Webflux执行阻塞JDBC调用

Spring Webflux如何依次调用两个不同的服务而不会阻塞?

Spring Boot Webflux:避免在处理程序中调用线程阻塞方法

Spring Webflux中资源服务器的范围不足

使用Spring Boot 2的非阻塞IO

使用Spring MVC测试非阻塞REST服务

Spring WebFlux创建无阻塞线程池

MongoDB的Spring数据中的非阻塞查询?

如何使用依赖注入在Spring中注入资源类实例

将多个REST调用与Spring Webflux结合

将Spring Webflux Mono转换为Either,最好没有阻塞?

如何以非阻塞方式解析Spring 5 WebClient响应?

从未调用Spring Integration WebFlux.outboundGateway

Spring Webflux非阻塞响应

Spring集成中如何重试对Webflux.outboundgateway的失败调用

在Spring Webflux中记录非阻塞操作吗?

结合非阻塞和阻塞调用并在Spring Webflux中返回结果

如何在Spring Webflux中使用对象映射器以非阻塞方式将对象转换为地图

Spring @Async与Spring WebFlux

Spring Webflux / Reactor 发布调用线程

Spring Webflux:非 Java 客户端的背压

Spring WebFlux - 关于复制方法调用的问题

Spring webflux 5.2.3 bodyToMono 在 onStatus 中的空 Mono 之后调用

Spring Webflux 在响应式堆栈中使用阻塞的 HttpClient

Spring Boot Webflux - flatMap 是链接 http 调用的正确方法吗?

Spring kafka - 对 Kafka 流使用非阻塞延迟重试的示例

Mockito:需要但未调用 Webflux Spring boot

Spring Webflux - “scanAvailable”:真

在阻塞应用设计中使用 Spring Webflux 的 WebClient 是否会导致比 RestTemplate 更大的资源使用