# 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='')