【发布时间】:2020-10-09 05:28:06
【问题描述】:
我正在使用 Spring Webflux 和 Spring Boot 2,我的场景是这样的:
控制器
@GetMapping(path="/products")
public List<Products> getProducts(){
return serviceObj.getProducts();
}
服务类
public List<Products> getProducts(){
List<Products> products = null;
//Call 1 -> to repository class method returning Flux<Products>
repositoryObj.getProductsFlux();
//Call 2 -> To repository class method returning List<Products>
repositoryObj.getProductsNormal();
//Concat results from Call 1 & Call 2 and return List<Products>
return products;
}
如何在返回之前连接 Flux 和正常产品列表中的结果? 没有响应式控制器是否可能?
附:我不想对从 Call 1 获得的结果调用 .block() 和 CompleteableFuture
【问题讨论】:
-
没有阻塞就无法获得Future。您必须使用
.block()才能获得结果。我已经在 Webflux 上工作了一年,所以我想说永远不要混合阻塞和非阻塞,这是一个非常糟糕的设计。在这种情况下,您应该修改您对 Reactor 核心的概念。
标签: spring-boot spring-webflux project-reactor nonblocking spring-reactive