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

Могут ли несколько консьюмер читать одну очередь в RabbitMQ

Да, несколько консьюмеров могут читать одну очередь в RabbitMQ. Это одна из ключевых возможностей брокера сообщений.

Как это работает:

  • RabbitMQ по умолчанию использует round-robin балансировку между консьюмерами.
  • Каждое сообщение доставляется только одному консьюмеру (если не включен режим fanout).

Пример:

python
import pika

def callback(ch, method, properties, body):
    print(f"Consumer received: {body}")

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='test_queue')

# Первый консьюмер
channel.basic_consume(queue='test_queue', on_message_callback=callback, auto_ack=True)

# Второй консьюмер (в другом процессе/потоке)
channel.basic_consume(queue='test_queue', on_message_callback=callback, auto_ack=True)

channel.start_consuming()

Нюансы:

  • Для равномерного распределения используйте channel.basic_qos(prefetch_count=1).
  • Если консьюмер падает, сообщение может быть возвращено в очередь (зависит от auto_ack).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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