Kafka客户端(消费者/生产者)宕机后恢复



在我工作的公司,我们使用没有身份验证的Spring for Kafka,最近我们做了一些实验来设置Kafka的安全性,我们在一小段时间内启用了身份验证,这导致我们微服务中的所有消费者/生产者崩溃!(微服务保持运行)

例外:

Authorization Exception and no authorizationExceptionRetryInterval set
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: foo-group

经过一番研究,我们发现这是kafka客户端的预期行为,我们需要设置authorizationExceptionRetryInterval属性

public void setAuthorizationExceptionRetryInterval (java.time. interval)持续时间authorizationExceptionRetryInterval)

设置AuthorizationException后重试的时间间隔由kafkconsumer抛出。缺省情况下,该字段为空,重试次数为空禁用。在这种情况下,容器将停止。的时间间隔必须小于max.poll.interval.ms消费者属性。

这里是其他一些有用的链接

为Spring Kafka设置authorizationExceptionRetryInterval

为什么当一个主题授权失败时,spring kafkconsumer会挂起n个主题的所有消费

我想知道的是:

  1. 是认证失败的唯一情况消费者/生产者下降?
  2. 如果有其他情况,如何确保我们的消费者/生产者在没有人为干预(重新启动)的情况下恢复微服务)?换句话说,如何检查是否消费者/生产者启动并重新启动它们?

容器仅在以下情况下停止:

  • AuthorizationExceptionauthorizationExceptionRetryInterval
  • NoOffsetForPartitionException-当ConsumerConfig.AUTO_OFFSET_RESET_CONFIG不是earliestlatest时抛出,并且该消费组的分区没有存在的偏移量。
  • FencedInstanceIdException-使用事务和静态组成员(意味着其他实例正在使用此实例id)。
  • StopAfterFenceException-当stopContainerWhenFenced为true时(默认为false) -仅适用于
  • 事务
  • 任意Error(如OOME)

相关内容

  • 没有找到相关文章

最新更新