【问题标题】:How to remove a Kafka consumer group from a specific topic?如何从特定主题中删除 Kafka 消费者组?
【发布时间】:2020-12-21 14:10:47
【问题描述】:

我更改了监听 Kafka 主题的 Web 服务的 consumer-group-id。现在,旧的组 id 仍然注册到主题,但没有具有该组 id 的消费者。因此,它是滞后的。如何从特定主题中删除特定消费者组?

我试过了:

kafka-consumer-groups --bootstrap-server kafka01.myserver.com:9092 --topic notification-topic --delete --group old-consumer-group --execute

但它返回:“消费者不支持从消费者组中删除特定主题的偏移量。

我应该完全删除消费者组吗?我用同一个group id收听其他话题,会不会受影响?

【问题讨论】:

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


    【解决方案1】:

    您不能单独删除特定组,也不能从组中删除主题。

    根据您为代理上的偏移量主题定义的保留时间,消费者组仍然可用。没有消耗的滞后组不会影响性能。

    注意:每次使用kafka-console-consumer,都会创建一个全新的组。

    【讨论】:

    • 是的,没有性能影响。但是消费者滞后图可能会变得嘈杂。此外,有些人可能会针对消费者滞后(尽管消费者与消费者之间的滞后)在一段时间内超过某个阈值而发出警报。在我的用例中,两者目前都是正确的。所以对我来说,如果有某种方法(甚至是 hack)来删除特定主题的组的偏移量,那将非常有帮助。
    • 使用kafka-consumer-groups.sh 已经可以删除整个消费者组。相反,我和 op 只想删除与仍在积极消费其他主题的消费者组的一个特定主题有关的偏移量。 AdminClient 也可以这样做吗?我在你链接到的文档中找不到这个。
    • 组作为一个整体由偏移主题中的消息管理。在不影响小组中其他人的情况下,不可能针对一个主题。例如,如果您从 offsets 主题中获取一条消息,它将有一个主题列表和它们已提交的偏移量;如果您从列表中删除了一个主题并将该消息发送回 offsets 主题以更新组,同时另一个消费者已经将新的偏移量推送到同一个组中,那么您实际上会导致该组回滚并轮询重复消息,如果否则它不会引发错误。
    • 啊,好的。感谢您的解释。但是,如果这个消费者组中的所有消费者在执行此操作之前完全停止,这听起来是有可能安全的(不会意外重复消息消费),对吧?问,因为在我的情况下这是一个可行的选择。
    【解决方案2】:

    从 Kafka 2.4.0 开始,可以从主题中删除单个消费者组 ID 偏移量。

    该调用与您已经尝试过的非常接近,但需要--delete-offsets 而不是--delete

    ./kafka-consumer-groups.sh \
      --bootstrap-server <bootstrap-server-url> \
      --delete-offsets \
      --group <my-group> \
      --topic <topic-name>
    

    迄今为止,official documentation(Kafka 2.7.0 及更低版本)中并未反映这一点。但是,在已经实施并发布的改进提案KIP-496的汇合文档中有描述。

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多