Sobes.tech
Назад к вопросам
Junior — Middle
51

Можно ли нескольким потребителям одновременно получать сообщения из одной очереди в RabbitMQ?

Компании, где спрашивали
Yappy

Ответ от нейросети

sobes.tech AI

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

То есть, если у вас есть очередь и несколько подписчиков, RabbitMQ распределит сообщения между ними, обеспечивая балансировку нагрузки.

Пример на Python с использованием pika:

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)

def callback(ch, method, properties, body):
    print(f"Получено {body}")
    ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_qos(prefetch_count=1)
channel.basic_consume(queue='task_queue', on_message_callback=callback)

print('Ожидание сообщений...')
channel.start_consuming()

Если запустить несколько таких потребителей, они будут получать разные сообщения из одной очереди.