【问题标题】:What happens to a Kafka consumer group when all consumers are removed移除所有消费者后,Kafka 消费者组会发生什么
【发布时间】:2021-02-05 07:12:24
【问题描述】:

我有一个带有自动缩放器的服务,每个实例都需要在一个单独的消费者组中,我通过创建一个随机的消费者组名称 group-id: my-service-${random.uuid} 来实现它。我想知道如果所有消费者都走了,消费者群体会发生什么。我注意到在 Confluent 平台上我有很多没有任何消费者的消费者群体。

没有消费者的消费者群体能存在多久?

我如何配置在服务被删除 5 分钟后删除消费者组(我希望组被删除,而不仅仅是偏移量被删除)?

【问题讨论】:

    标签: spring spring-boot apache-kafka kafka-consumer-api spring-kafka


    【解决方案1】:

    在 Kafka 中,您拥有代理级别的配置 offsets.retention.minutes

    offsets.retention.minutes:在消费者组失去所有消费者(即变为空)后,其偏移量将在此保留期内保留,然后被丢弃。对于独立消费者(使用手动分配),偏移量将在最后一次提交时间加上此保留期后过期。”

    此配置默认为 7 天。查看Broker Configurations 概述中的所有详细信息。

    AdminClient 中还有一个 API,可让您删除特定的 ConsumerGroup。我已经在另一个answer 中用一些代码解释了这个过程。

    从 Confluent 6.x 开始,您还可以使用 confluent 控制中心(使用 REST API)轻松删除过时的 ConsumerGroups。

    【讨论】:

    • 是否表示如果我将offsets.retention.minutes设置为5分钟,那么5分钟后消费者组也会被移除?
    • 不,它们将在 5 分钟后过期。当它们被删除时,这取决于您对如何处理压缩主题的设置。每个 ConsumerGroup 的偏移量存储在内部 compacted Kafka 调用 __consumer_offsets 中,它将根据如何从压缩主题中删除消息的设置永久删除。
    • 是否可以在consumer中配置consumer groups的保留期,还是只能在Kafka中配置?
    • 它只能在集群级别配置为偏移量或集中存储在同一内部Kafka主题中的所有消费者组。但是,您可以在消费者级别做的是调整一些配置,以便在消费者被认为不活动时(通过超时)。
    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多