Spring磁通堆芯

u91tlkcl  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(253)

我是webfluxReact堆库的新手,第一次使用React式编程。我想并行调用2个restapi,在这些响应的基础上,我想再调用2个不同的api。
在调用最后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).map(ret->data.setservice4responseinfinalresponse(ret)).subscribeon(schedulers.elastic())
.map最后只调用了一次,我希望每次运行我的上面的.flatmap时它都会运行…如果你能指导我,它会非常有用…这是我的确切要求………例如,假设我的流量有4个条目,那么myservice4.method会被调用4次,所以我希望每次调用服务时.map()也应该被调用4次
但问题是它只运行1次
让我知道我错过了什么

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题