如果Flux
失败,我正在尝试使用RabbitMQ绑定器在Spring Cloud Stream中实现延迟重试。我尝试使用reference documentation:
@StreamListener(MySink.SINK_NAME)
public void myStream(Flux<Entity> flux) {
flux.flatMap(...). ..
// do more stuff with the flux
.retryWhen(companion -> companion.flatMap( __ -> Flux.range(1, 4))
.flatMap(index -> Mono.delay(Duration.ofMillis(index * 100)))
.doOnNext(s -> System.out.println("retried at " + LocalTime.now())))
}
但是没有重试流。然而,我可以看到“重试......”打印一次,但事后没有任何反应。
现在如果我删除了延迟(即.flatMap(index -> Mono.delay(Duration.ofMillis(index * 100)))
),那么重试似乎有效,但显然没有延迟。为什么添加.flatMap(index -> Mono.delay(Duration.ofMillis(index * 100)))
时似乎重试功能会中断?我该如何解决?