Introduction
RabbitMQ is an open-source message broker that enables communication between applications or services in a distributed system. It uses the Advanced Message Queuing Protocol (AMQP) to exchange messages and helps decouple application components. This approach allows systems to communicate asynchronously, reliably, and at scale. You can use RabbitMQ in scenarios that require queue-based messaging to:
- Process tasks in a microservices architecture
- Deliver real-time notifications
- Run long processes without blocking the main workflow
- Maintain reliable communication between services
Architecture of RabbitMQ:
RabbitMQ includes several essential components that work together to provide robust and flexible message handling:
Producer:The producer sends messages to RabbitMQ. It creates the message and publishes it to an exchange, which then routes it to the appropriate queue.
Queue:The queue stores messages until a consumer processes them. It acts as a buffer and typically follows a First In, First Out (FIFO) order—unless configured otherwise.
Consumer: The consumer receives messages from a queue. It connects to RabbitMQ, reads the messages, and processes them accordingly.
Exchange: The exchange routes messages to queues based on routing rules. When a producer sends a message, the exchange uses the routing key to determine the destination queue.
Binding: A binding links an exchange to a queue. It defines the routing rules that determine how messages flow from the exchange to the queue.
Routing Key: The routing key guides the exchange in directing messages. When publishing a message, the producer specifies a routing key that the exchange uses to match with bindings.
Virtual Hosts (vHosts): A virtual host isolates environments within a RabbitMQ instance. Each vHost contains its own exchanges, queues, and bindings, allowing multi-tenancy and separation of concerns.
Connection and Channel
A connection is a TCP link between a client and RabbitMQ.
A channel is a lightweight virtual connection within a real connection, enabling multiple operations to run concurrently without opening new connections.
Key Use Cases
Discovery Use Cases
Device discovery provides customers with a unified view that displays all elements of a RabbitMQ cluster and highlights their relationships.
Monitoring Use Cases
Device monitoring collects metric values over time and sends alerts to the designated customer team when thresholds are breached or unexpected behavior is detected based on configured rules. This enables the team to respond immediately and ensures smooth business operations with minimal or zero downtime during infrastructure related issues.
- Provides metrics related to job scheduling time, status, and so on.
- Generates alerts for each metric to notify the administrator of issues affecting the resource.
Supported Target Versions
- This app has been validated on RabbitMQ version 4.1.2.
Roles and Permissions
Root/Non-Root user credentials is required to fetch discovery and monitoring related data. (Note - Provided user must have minimum Monitoring (Read-Only) role or above.).
Resource Hierarchy
→ RabbitMQ Cluster - (Cluster like 2 or more nodes)
→ RabbitMQ Node
→ RabbitMQ Queues
Version History
Application Version | Bug fixes / Enhancements |
---|---|
1.0.0 | Initial Discovery and monitoring support for RabbitMq. |