spring链接多个发布者以转换响应

uubf1zoe  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(343)

我想在每个通量事件后链接一个单声道。mono发布者需要flux发布的每个事件的信息。响应应该是包含通量事件和单响应数据的通量。
挖掘之后,我在平面图中找到了一张Map。代码如下所示:

override fun searchPets(petSearch: PetSearch): Flux<Pet> {
    return petRepository
        .searchPets(petSearch) // returns Flux<pet>
        .flatMap { pet -> 
            petService
            .getCollarForMyPet() // returns Mono<collar>
            .map { collar -> PetConverter.addCollarToPet(pet, collar) } //returns pet (now with with collar)
        }
}

我主要关心的是:
代码气味是在平面图中使用Map的吗?
宠物的可变内容是否会受到多个流量事件和单流事件的影响?
有没有更好的方法来处理这种行为?

46qrfjad

46qrfjad1#

这种方法非常好。
React流规范要求 onNext 比赛项目不重叠,所以比赛条件不会有问题。 flatMap 但是引入了并发性,因此对 PetService 将并行运行。这不应该是个问题,除非 searchPets 发出一些 Pet 两次。
并不是因为这种并发性, flatMap 在这种情况下可以重新订购宠物。想象一下搜索结果 petA 那么 petB ,但是 petService 需要 petA 需要更长的时间。在平面图上, petB 会先发射(带项圈),然后 petA .

相关问题