如何解决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 举报,一经查实,本站将立刻删除。