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