有什么方法可以在Mono.zip中提供事务回滚吗?

时间:2020-04-16 13:04:13

标签: spring-webflux

我在业务流程层微服务上工作,需要并行调用一些不同微服务的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,如果abc中的任何一个错误完成,则此zip将会失败。假设在第三个调用中出了点问题,我想以一种可以处理service1.api()service2.api()完成的操作的方式来处理这种情况,即像事务一样回滚。

对于Spring WebFlux有点新知识,我所发表的任何错误声明表示歉意。感谢您提前提供的所有帮助。

1 个答案:

答案 0 :(得分:0)

我相信没有回滚个人电话的规定。您可以利用Mono.zipDelayError来完成有效的调用(可能失败的调用除外)。之后,在错误返回时,您可以使用显式实现的单个回滚。