【发布时间】:2020-03-05 13:47:11
【问题描述】:
我想知道如何使用 Webflux 编写非阻塞代码。
这是我想做的:
- 通过
ProductProperties字段获取所有产品(以 Flux 形式返回) - 从
Flux<Product>.availabilityCalendar获取值列表 使用在第 2 步中检索到的数据并获取一些其他数据(以 Flux 形式返回) - 一切都应该是非阻塞操作。
如何做到这一点?如何从Flux<Object> 获取值,然后获取以 Flux 形式返回的其他一些数据,从而避免像 Flux.block() 这样的阻塞操作来检索下一步获取最终数据返回所需的数据?
public Flux<Product> getAllProductsByAvailability(Flux<ProductProperties> productProperties,
Map<String, String> searchParams) {
productProperties
.flatMap(property -> productRepository.findByProductPropertiesId(property.getId())) //1. return Products
.flatMap(product -> Flux.just(product.getAvailabilityCalendar())) //2. how to get Product.availabilityCalendar list as non-blocking operation to work with this data afterwards?
(...)
地点:
productRepository.findByProductPropertiesId返回通量产品具有字段:
ArrayList<ProductAvailability> availabilityCalendar
这是一个好方法吗?
谢谢!
【问题讨论】:
标签: reactive-programming spring-webflux