如何让消费者离开并进入卡夫卡的消费群体

时间:2019-09-05 20:17:35

标签: apache-kafka kafka-consumer-api distributed-computing kafka-python

因此,我有一个消费者组,并且有几个不同的节点,每个节点都充当消费者。每个节点应该执行一些计算密集型任务。我只想在该使用者组具有可用的CPU资源时使其加入该使用者组。一旦加入,它将使用该主题中的一条消息,说明需要执行什么计算,然后开始计算。现在,由于该使用者从事计算任务,我想使其脱离使用者组,因为它没有进一步执行新计算的能力。这可以在卡夫卡做吗?也许还有另一种更好的方法可以完成上述操作?我正在使用kafka-python库。

1 个答案:

答案 0 :(得分:1)

通常,无论使用什么Kafka客户端,都可以使用任何Kafka使用者进行此操作。方法是简单地订阅主题,使用您要处理的消息,仅确认该特定消息,然后关闭使用者。

特别是在Kafka python客户端中,所需的方法是KafkaConsumer.close。请确保将自动提交设置为false,因为您的民意调查所消耗的信息可能比您要计算的消息要多,并且您只想确认您实际上要 从事于。

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

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

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

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