RabbitMQ uses exchanges to route messages to queues.
Direct exchange:
Exact routing key match. Message to queue with matching binding key.
Fanout exchange:
Broadcast to all bound queues. Routing key ignored.
Topic exchange:
Pattern matching with wildcards. * matches one word, # matches zero or more.
Headers exchange:
Route based on message headers instead of routing key.
Choose based on routing needs: direct for targeted, fanout for broadcast, topic for flexible patterns.