kafka中如何让一个consumer离开并进入一个consumer group

How to make a consumer leave and enter a consumer group in kafka

所以,我有一个消费者组,我有几个不同的节点,每个节点都充当消费者。每个节点都应该执行一些计算密集型任务。我想让一个消费者只有在它有可用的 CPU 资源时才加入这个消费者组。一旦加入,它将使用来自主题的关于它需要执行什么计算的消息,然后开始计算。现在这个消费者正在从事计算任务,我想让它从消费者组中退出,因为它没有任何进一步的能力来执行新的计算。这可能在卡夫卡做吗?或者也许还有另一种更好的方法来做上述事情?我正在使用 kafka-python 库。

一般来说,无论使用何种 Kafka 客户端,使用任何 Kafka 消费者都可以做到这一点。方法很简单,就是订阅主题,消费要处理的消息,只确认特定消息,然后关闭消费者。

具体在Kafkapython客户端,你要的方法是KafkaConsumer.close。确保将自动提交设置为 false,因为您的投票可能消耗了比您要计算的消息更多的消息,而您只想确认您 实际上 继续工作。

或者,您可以将您的消费者属性(特别是 max.poll.records)设置为每次轮询仅获取 1 条消息,然后您可以使用 .close 方法并将 auto-commit 设置为 true .

有关所有 KafkaConsumer 配置选项的更多信息,请参见此处: https://kafka.apache.org/documentation/#consumerconfigs

这是官方 kafka-python 客户端 KafkaConsumer 文档的 link:

https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html#kafka.KafkaConsumer.close