问题描述
我对 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 (将#修改为@)