Встречается на 1% собеседований по Python
Как читать разные сообщения при трех Consumer в Kafka
В Kafka сообщения распределяются между партициями топика, и каждый Consumer в группе читает данные из своей партиции. Для балансировки нагрузки можно использовать:
- Групповой консьюминг – Consumers объединяются в группу (
group.id), и Kafka автоматически распределяет партиции между ними. Если Consumers больше, чем партиций, часть Consumers будет без работы.
Пример на confluent-kafka-python:
python
from confluent_kafka import Consumer
conf = {
'bootstrap.servers': 'localhost:9092',
'group.id': 'my_group',
'auto.offset.reset': 'earliest'
}
consumer = Consumer(conf)
consumer.subscribe(['my_topic'])
while True:
msg = consumer.poll(1.0)
if msg is None: continue
print(f"Consumer received: {msg.value()}")- Ручное назначение партиций – можно явно указать, какие партиции читать:
python
consumer.assign([TopicPartition('my_topic', 0)]) # Читаем только партицию 0Важно:
- Увеличьте количество партиций топика (
num.partitions), если Consumers больше, чем партиций. - Используйте
group.idдля автоматического балансирования. - Для строгого порядка сообщений используйте ключ (
key) при отправке – сообщения с одним ключом всегда попадают в одну партицию.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы