假设我们有以下代码:
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。发布
java -version
)1.8
答案 0 :(得分:1)
您可以为每个步骤应用单独的retryBackoff
。
T someObject = ...;
return step1(someObject)
.flatMap(o1 -> step2(o1).retryBackoff(...))
.flatMap(o2 -> step3(o2).retryBackoff(...))
最好将单个timeot和retryBackOffs封装到stepN
方法中