我在业务流程层微服务上工作,需要并行调用一些不同微服务的API。为此,我正在使用subscribeOn(Schedulers.parallel)
并订阅Mono.zip
中的每个响应。例如:
Mono<A> a = service1.api().subscribeOn(Schedulers.parallel());
Mono<B> b = service2.api().subscribeOn(Schedulers.parallel());
Mono<C> c = service3.api().subscribeOn(Schedulers.parallel());
return Mono.zip(a,b,c);
现在AFAIK,如果a
,b
或c
中的任何一个错误完成,则此zip将会失败。假设在第三个调用中出了点问题,我想以一种可以处理service1.api()
和service2.api()
完成的操作的方式来处理这种情况,即像事务一样回滚。
对于Spring WebFlux有点新知识,我所发表的任何错误声明表示歉意。感谢您提前提供的所有帮助。
答案 0 :(得分:0)
我相信没有回滚个人电话的规定。您可以利用Mono.zipDelayError来完成有效的调用(可能失败的调用除外)。之后,在错误返回时,您可以使用显式实现的单个回滚。