Spring boot 使用Webflux的Spring反应式编程-作为非阻塞流的多个操作

Spring boot 使用Webflux的Spring反应式编程-作为非阻塞流的多个操作,spring-boot,reactive-programming,spring-webflux,flux,Spring Boot,Reactive Programming,Spring Webflux,Flux,我有以下代码: public Flux<Offer> getAllFilteredOffers(Map<String, String> searchParams) { Flux<ProductProperties> productProperties = productPropertiesService.findProductPropertiesBySearchCriteria(searchParams); Flux<Product&g

我有以下代码:

public Flux<Offer> getAllFilteredOffers(Map<String, String> searchParams) {

    Flux<ProductProperties> productProperties = productPropertiesService.findProductPropertiesBySearchCriteria(searchParams);
    Flux<Product> products = productService.findProductsByPropertyId(productProperties);
    Flux<Product> productsByAvailability = productService.getAllProductsByAvailability(products, searchParams);
    Flux<Offer> offers = offerRepository.findByPropertiesIds(productsByAvailability);
    return offers;
看起来像:

public Flux<Product> getAllProductsByAvailability(Flux<Product> products,
            Map<String, String> searchParams) {
我不是Webflux方面的专家,目前我正试图找出如何处理这样的问题:我有Flux,但在第二步中,我需要从以前的Flex对象中提取一些数据—保持非阻塞流


比你强

我不知道你在哪里读到了
地图
,但是如果你看一下官方文档,没有关于阻塞的内容,它只是对每个项目使用同步功能

使用此代码:

productPropertiesService.findProductPropertiesBySearchCriteria(searchParams)
                .flatMap(productProperties -> productService.findProductsByPropertyId(productProperties))
                .collectList()   (1)
                .flatMapMany(products -> productService.getAllProductsByAvailability(Flux.fromIterable(products), searchParams)) (2)
1) 收集要列出的所有元素并转换为Mono>


2) 从列表中创建通量并将其作为参数提供,flatMapMany将Mono转换为通量

Yauhen Balykin-这是一个整体上的非阻塞操作?是的,运算符是非阻塞的,但如果您担心任何操作被阻塞,您可以在官方文档中阅读。感谢您的帮助!这正是我一直在寻找的
    Flux
                    .just(productPropertiesService.findProductPropertiesBySearchCriteria(searchParams))
                    .flatMap(productProperties -> productService.findProductsByPropertyId(productProperties))
                    .flatMap(products -> productService.getAllProductsByAvailability(Flux.create(products)?????????, searchParams))
???
productPropertiesService.findProductPropertiesBySearchCriteria(searchParams)
                .flatMap(productProperties -> productService.findProductsByPropertyId(productProperties))
                .collectList()   (1)
                .flatMapMany(products -> productService.getAllProductsByAvailability(Flux.fromIterable(products), searchParams)) (2)