Spring webflux 反应堆芯

问题描述

我对 Webflux 反应器库很陌生,并且第一次使用反应式编程。 我想并行调用 2 个 rest api,并且根据这些响应,我想对不同的 api 进行另外 2 个调用

调用最后 2 个 api 时,对于 1 个 api,我需要并行进行多个调用,然后对它们的响应进行处理。

下面是我使用的代码

Mono<response1> r1 =
    MyService1.method1(InputParameters);

Mono<response2> r2 =
    MyService2.method2(InputParameters);


return Mono.zip(
        r1,r2,(r1Alias,r2Alias) -> new finalResponseClass(r1Alias,r2Alias))
    .flatMap(
        data ->
            MyService3
                .method3(inputParameters)
                .map(
                   res ->
                        data.setService3ResponseInFinalResponse(res)))
    .flatMap(
        data -> {
          Mono<finalResponseClass> finalRes =
             Flux.fromIterable(listofInputParametersForLastApiObtainedFromData);
.flatMap(
                      each ->
                          MyService4
                              .method(each)
                              .map(
                                  ret ->
                                      data.setService4ResponseInFinalResponse( ret))
                              .subscribeOn(Schedulers.elastic()))
                  .next();
          return finalRes;
        });
 

这里,当我调用 MyService4.method(each) 。地图( 返回-> data.setService4ResponseInFinalResponse(ret)) .subscribeOn(Schedulers.elastic())).map 最后只调用一次 我希望它每次运行我上面的 .flatMap 时都运行......如果你能指导我真的很有帮助.. 这是我的确切要求.........即,假设我的 Flux 有 4 个条目,然后 MyService4.method 被调用 4 次所以我想要 .map() 也应该被调用 4 次每次调用服务时

但问题是它只运行了 1 次

让我知道我错过了什么

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)