The core idea is that producer never sends any msg directly to a queue, quite often the producer even don'y know if a msg will be delivered to any queue at all.
Instead producer send msg to exchange, exchange receive msg from producer and then send to queue.
How exchange decide which queue to send - exchange type
list exchange
rabbitmqctl list_exchanges
Deliver a message to multiple consumers: "publish/subscribe"
fanout - it just broadcasts all the messages it receives to all the queues it knows.
temporary queues
We can do this by supplying empty queue parameter to queue_declare: random name