RabbitMQ is a powerful message broker that enables applications to communicate asynchronously. To use it effectively, it helps to understand the core concepts that make up its architecture.
🖋 Producer
An application that sends messages into the system. Producers create and push data for consumers to process.
📥 Consumer
An application that receives and processes messages from a queue. Consumers can handle tasks asynchronously, which improves scalability.
📦 Queue
A buffer that stores messages until they are consumed. Queues ensure that messages are delivered in the correct order and only to available consumers.
💬 Message
The actual piece of information sent from a producer to a consumer through RabbitMQ. Messages can contain text, JSON, binary data or other formats.
🔌 Connection
A TCP connection between your application and the RabbitMQ broker. All communication begins with establishing this link.
🔄 Channel
A virtual connection inside a TCP connection. All publishing and consuming actions happen over channels, allowing multiple streams of communication without creating multiple TCP connections.
🔀 Exchange
A component that receives messages from producers and pushes them to queues based on routing rules. Each queue must be bound to at least one exchange to receive messages.
🔗 Binding
A link between a queue and an exchange. Bindings define how messages are routed from exchanges to queues.
🗝 Routing Key
An address-like value that an exchange uses to decide which queue should receive a message. Routing keys make targeted message delivery possible.
📡 AMQP
Advanced Message Queuing Protocol (AMQP) is the standard protocol RabbitMQ uses for messaging. It defines how messages are formatted, sent and acknowledged.
👤 Users
RabbitMQ requires authentication using a username and password. Each user can be assigned permissions to read, write or configure resources. Permissions can be set per virtual host.
🏠 Vhost
A virtual host provides a way to separate applications within the same RabbitMQ instance. Each vhost can have its own users, queues and exchanges, enabling multi-tenant setups.