卡夫卡客户(消费者/生产商)在崩溃后恢复 [英] Recovering Kafka clients (consumers/producers) after they went down
本文介绍了卡夫卡客户(消费者/生产商)在崩溃后恢复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我工作的公司,我们在没有身份验证的情况下使用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
属性
设置在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
我想知道的是:
- 身份验证失败是以下情况的唯一情况吗 消费者/生产者走下坡路?
- 如果还有其他情况,如何确保我们的 消费者/生产者无需人工干预即可恢复(重新启动 微服务)?换言之,如何检查 消费者/生产者启动并以其他方式重新启动它们?
推荐答案
容器仅在以下情况下停止:
AuthorizationException
不带authorizationExceptionRetryInterval
NoOffsetForPartitionException
-当ConsumerConfig.AUTO_OFFSET_RESET_CONFIG
不是earliest
或latest
并且此使用者组的分区没有现有偏移量时引发。FencedInstanceIdException
-使用事务和静态组成员(表示其他实例正在使用此实例ID)。StopAfterFenceException
-当stopContainerWhenFenced
为真(默认为假)-仅适用于事务- 任何
Error
(如OOME)
这篇关于卡夫卡客户(消费者/生产商)在崩溃后恢复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文