首页 > 解决方案 > Spring Boot Webclient - 合并

问题描述

我想合并 2 个响应并返回一个 Flux。

private Flux<Response<List<Company>, Error>> loopGet(List<Entity> registries, Boolean status) {
    return Flux.fromIterable(registries)
            .flatMap(this::sendGetRequest)
            .mergeWith(Mono.just(fetch(status)));

}

这就是我正在做的,正在工作,但我希望合并在调用 Mono.just 之前等待(获取(状态))。我会解释一下,sendGetRequest 返回一个 Mono,它进行 API 调用,并将结果保存到 db。随后,合并使用 fetch 方法调用数据库,但该数据尚未更新。如果我再次拨打电话,我会得到更新的数据。

标签: javaspringspring-bootspring-webfluxproject-reactor

解决方案


您需要concatWithfromCallable确保在 get 请求完成后延迟调用 fetch。

private Flux<Response<List<Company>, Error>> loopGet(List<Entity> registries, Boolean status) {
    return Flux.fromIterable(registries)
            .flatMap(this::sendGetRequest)
            .concatWith(Mono.fromCallable(() -> fetch(status)));

}

推荐阅读