在 Spring 启动应用程序中为 kafka 消费者设置重试策略时,何时使用 ExponentialBackOffPolicy 与 FixedBackOffPolicy?

When to use ExponentialBackOffPolicy vs FixedBackOffPolicy when setting retry policy for a kafka consumer in a Spring boot app?

在 Spring 启动应用程序中为 kafka 消费者设置重试策略时,何时使用 ExponentialBackOffPolicy 与 FixedBackOffPolicy?

我看到 FixedBackOffPolicy 是 BackOffPolicy 的一个实现,它在继续之前暂停一段固定的时间,ExponentialBackOffPolicy 是 BackOffPolicy 的一个实现这会增加给定集中每次重试的退避期。

除此之外,FixedBackOffPolicy 扩展了 StatelessBackOffPolicy 而 ExponentialBackOffPolicy 则没有。在这方面,请帮助我理解,哪些合适的用例更喜欢一个而不是另一个?

这很简单; FixedBackOffPolicy 不需要状态,因为您在每次重试之间等待相同的时间间隔,例如5秒。

例如5 秒,5 秒,5 秒,...

随着 ExponentialBackOffPolicy 状态在重试之间保持。

例如初始间隔为 1 秒,乘数为 2.0,最大间隔为 10 秒,重试间隔将为 1 秒、2 秒、4 秒、8 秒、10 秒、10 秒、10 秒,...

对于 Kafka,您需要确保重试间隔的总和小于 max.poll.interval.ms