Publish Subscribe : Sending messages to many consumers at once¶
This part of the tutorial introduce exchange.
A emit_log.py scripts publish messages into a fanout exchange. Then the receive_log.py script creates a temporary queue (which is deleted on the disconnection).
If the script receive_log.py is ran multiple times, all the instance will receive the message emitted by emit_log.
Publisher¶
The publisher create a new fanout exchange:
await channel.exchange_declare(exchange_name='logs', type_name='fanout')
And publish message into that exchange:
await channel.basic_publish(message, exchange_name='logs', routing_key='')
Consumer¶
The consumer create a temporary queue and binds it to the exchange.
await channel.exchange(exchange_name='logs', type_name='fanout') # let RabbitMQ generate a random queue name result = await channel.queue(queue_name='', exclusive=True) queue_name = result['queue'] await channel.queue_bind(exchange_name='logs', queue_name=queue_name, routing_key='')