当我添加延迟时,使用Spring Cloud Stream重试似乎会中断?

时间:2018-06-14 16:47:38

标签: java spring-boot rabbitmq spring-cloud-stream

如果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)))时似乎重试功能会中断?我该如何解决?

0 个答案:

没有答案