繁体   English   中英

Spring WebFlux-从流程的中间重试Mono

[英]Spring WebFlux - Retrying Mono from the middle of the flow

假设我们有以下代码:

T someObject = ...;
return step1(someObject)
            .flatMap(this::step2)
            .flatMap(this::step3)
            .flatMap(this::step4)
            .flatMap(this::step5)
            .timeout(timeout)
            .retryBackoff(numberOfRetries, Duration.ofMillis(100));

这些步骤方法中的每一个都返回一个新的Mono

在此实现的当下,如果在步骤3,步骤4或步骤5中发生异常,则从步骤2开始重复整个流程。 我希望能够从发生异常的地方重新开始流程,例如,如果在步骤4中发生异常,则仅从步骤4重复流程(当然,重复的输入是从步骤3成功的响应)。

可以在当前版本中以某种方式实现吗?

反应堆核心版本

3.2.2.RELEASE

JVM版本(例如java -version

1.8

您可以为每个步骤应用单独的retryBackoff

T someObject = ...;
return step1(someObject)
        .flatMap(o1 -> step2(o1).retryBackoff(...))
        .flatMap(o2 -> step3(o2).retryBackoff(...))

最好将单个timeot和retryBackOffs封装到stepN方法中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM