Встречается на собеседованиях • сегодня

Как читать разные сообщения при трех Consumer в Kafka

В Kafka сообщения распределяются между партициями топика, и каждый Consumer в группе читает данные из своей партиции. Для балансировки нагрузки можно использовать:

  1. Групповой консьюминг – 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()}")
  1. Ручное назначение партиций – можно явно указать, какие партиции читать:
python
consumer.assign([TopicPartition('my_topic', 0)])  # Читаем только партицию 0

Важно:

  • Увеличьте количество партиций топика (num.partitions), если Consumers больше, чем партиций.
  • Используйте group.id для автоматического балансирования.
  • Для строгого порядка сообщений используйте ключ (key) при отправке – сообщения с одним ключом всегда попадают в одну партицию.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы