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

Raj*_*Raj 1 apache-kafka spring-kafka

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

我将FixedBackOffPolicy视为BackOffPolicy 的一种实现,它在继续之前暂停一段固定的时间,而ExponentialBackOffPolicy 则视为 BackOffPolicy 的一种实现,它增加了给定集中每次重试尝试的回退时间。

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

Gar*_*ell 5

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

例如 5 秒、5 秒、5 秒、...

ExponentialBackOffPolicy状态被维持重试之间。

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

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