使用spring-boot 1.5.21玩spring-retry,并注意到在没有实现恢复方法的情况下,当达到maxAttempts时,spring-retry会重新启动。
如果实施了适当的恢复方法,则可按预期工作。如果没有恢复方法,重试不会在maxAttempts处停止,而是再次重新启动。重新启动的次数等于配置的maxAttempts。例如,最大尝试次数=3,重试将执行9次(运行3次重试*3次重启)
使用注释设置重试块@Retryable(include= {ResourceAccessException.class},maxAttemptsExpression = "${retry.maxAttempts}",backoff = @Backoff(delayExpression = "${retry.delay}",multiplierExpression = "${retry.delay-multiplier}"))
maxAttempts =3的预期结果是重试在3次尝试后停止实际结果是重试将重新启动3次尝试3次,总共9次重试。
仅当未提供恢复方法时,才会出现上述情况。根据文档,recover方法是可选的,我不需要这样做,因为在我的例子中,对于失败的REST服务调用没有有效的恢复。(没有可用的冗余服务)
发布于 2019-08-16 00:54:27
如果没有恢复程序,则抛出最后一个异常。
如果调用的源是侦听器容器(例如RabbitMQ、JMS),则将重试传递。
这就是恢复者的全部意义所在。
https://stackoverflow.com/questions/57511798
复制相似问题