Sobes.tech
Junior — Middle

Is it possible for multiple consumers to receive messages from the same queue in RabbitMQ simultaneously?

sobes.tech AI

Answer from AI

In RabbitMQ, multiple consumers can receive messages from a single queue simultaneously, but each specific message will be delivered to only one of them. This is called the competing consumers model.

That is, if you have a queue and several subscribers, RabbitMQ will distribute messages among them, ensuring load balancing.

Example in Python using 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"Received {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('Waiting for messages...')
channel.start_consuming()

If you run multiple such consumers, they will receive different messages from the same queue.