Как вручную назначить разделы, сохраняя возможность автоматической фиксации?
Я пытаюсь вручную назначить разделы для каждого потребителя в группе потребителей. Однако, когда вы добавляете потребителей в группу, Kafka (или, по крайней мере, kafka-python) предполагает, что вы хотите, чтобы координатор группы выполнял все назначения. Есть ли способ сохранить все преимущества использования группы потребителей (в частности, автокоммит) при возможности вручную назначать разделы? Могу ли я написать собственный разделитель разделов?
Я использую библиотеку kafka-python 1.3.3.
2 ответа
Да, потребитель Kafka имеет свойство "partition.assignment.strategy", где вы можете указать свой собственный пользовательский Assignor, по умолчанию это RangeAssignor
Автоматическая фиксация также зависит от свойства "enable.auto.commit"
Конфиги для пользователей Kafka: https://kafka.apache.org/documentation/
Ты можешь использовать assign
способ вручную назначить разделы потребителю. например:
partition = TopicPartition('myTopic', 0)
self.consumer = KafkaConsumer(...)
self.consumer.assign([partition])