Spring磁通堆芯

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

我是webfluxReact堆库的新手,第一次使用React式编程。我想并行调用2个restapi,在这些响应的基础上,我想再调用2个不同的api。
在调用最后2个api时,对于1个api,我需要并行地进行多个调用,然后对它们的响应进行处理。
下面是我使用的代码:

  1. Mono<response1> r1 =
  2. MyService1.method1(InputParameters);
  3. Mono<response2> r2 =
  4. MyService2.method2(InputParameters);
  5. return Mono.zip(
  6. r1,
  7. r2,
  8. (r1Alias, r2Alias) -> new finalResponseClass(r1Alias, r2Alias))
  9. .flatMap(
  10. data ->
  11. MyService3
  12. .method3(inputParameters)
  13. .map(
  14. res ->
  15. data.setService3ResponseInFinalResponse(res)))
  16. .flatMap(
  17. data -> {
  18. Mono<finalResponseClass> finalRes =
  19. Flux.fromIterable(ListOfInputParametersForLastApiObtainedFromData);
  20. .flatMap(
  21. each ->
  22. MyService4
  23. .method(each)
  24. .map(
  25. ret ->
  26. data.setService4ResponseInFinalResponse( ret))
  27. .subscribeOn(Schedulers.elastic()))
  28. .next();
  29. return finalRes;
  30. });

在这里,当我打电话的时候
myservice4.method(each).map(ret->data.setservice4responseinfinalresponse(ret)).subscribeon(schedulers.elastic())
.map最后只调用了一次,我希望每次运行我的上面的.flatmap时它都会运行…如果你能指导我,它会非常有用…这是我的确切要求………例如,假设我的流量有4个条目,那么myservice4.method会被调用4次,所以我希望每次调用服务时.map()也应该被调用4次
但问题是它只运行1次
让我知道我错过了什么

暂无答案!

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

相关问题