卡夫卡客户(消费者/生产商)在崩溃后恢复 [英] Recovering Kafka clients (consumers/producers) after they went down

查看:16
本文介绍了卡夫卡客户(消费者/生产商)在崩溃后恢复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我工作的公司,我们在没有身份验证的情况下使用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.Duration authorizationExceptionRetryInterval)

设置在AuthorizationException为 由KafkaConsumer抛出。默认情况下,该字段为空,重试次数为 残疾。在这种情况下,集装箱将被停止。时间间隔 必须小于Max.poll.interval.ms使用者属性。

以下是其他一些有用的链接

Setting authorizationExceptionRetryInterval for Spring Kafka

Why does the spring KafkaConsumer suspend all consumption from n topics when one fails to authorize

我想知道的是:

  1. 身份验证失败是以下情况的唯一情况吗 消费者/生产者走下坡路?
  2. 如果还有其他情况,如何确保我们的 消费者/生产者无需人工干预即可恢复(重新启动 微服务)?换言之,如何检查 消费者/生产者启动并以其他方式重新启动它们?

推荐答案

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

  • AuthorizationException不带authorizationExceptionRetryInterval
  • NoOffsetForPartitionException-当ConsumerConfig.AUTO_OFFSET_RESET_CONFIG不是earliestlatest并且此使用者组的分区没有现有偏移量时引发。
  • FencedInstanceIdException-使用事务和静态组成员(表示其他实例正在使用此实例ID)。
  • StopAfterFenceException-当stopContainerWhenFenced为真(默认为假)-仅适用于事务
  • 任何Error(如OOME)

这篇关于卡夫卡客户(消费者/生产商)在崩溃后恢复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆