rabbitmq list queues on all vhosts
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
RabbitMQ is a widely used open-source message broker software that temporarily stores messages until they are received and processed by their designated consumer. In RabbitMQ, virtual hosts (vhosts) provide logical grouping and isolation, so that different applications, development environments, or tenants can operate independently within the same RabbitMQ instance.
Understanding Virtual Hosts (Vhosts)
Vhosts in RabbitMQ are akin to namespaces or isolated environments. Each vhost maintains its own set of queues, exchanges, and bindings. They're useful for multi-tenant environments or for segmenting broad operational domains within a single RabbbitMQ instance. Permissions can also be controlled per vhost, allowing for detailed access control.
Listing Queues Across All Vhosts
To monitor or manage queues across all vhosts, an administrator needs to access specific queue information within each vhost. This is crucial for tasks like monitoring queue health, performance optimization, and troubleshooting.
Accessing RabbitMQ Management Interface
One of the most user-friendly methods to list queues across all vhosts is by using the RabbitMQ Management Interface, a web-based UI that ships with RabbitMQ. Once logged in, an administrator can switch between vhosts to view the queues within each one.
Using RabbitMQ Command Line (rabbitmqctl)
For those preferring a command-line approach, rabbitmqctl is the tool that facilitates various administrative tasks in RabbitMQ. Here’s how you can list all queues across all vhosts using rabbitmqctl:
To list queues across all vhosts, you would need to run this command for each vhost. You can automate this by combing list_queues with a command that fetches all vhosts:
This script will iterate over all vhosts and list the queues in each.
Viewing Queue Information Programmatically
For those needing to integrate this functionality into scripts or applications, RabbitMQ offers APIs. The RabbitMQ HTTP API can be particularly handy for listing queues. Here you can issue a GET request:
Replace vhost_name with the name of your vhost. To script it across all vhosts, similar to the rabbitmqctl example, iterate over vhosts.
Key Metrics and Information
When listing queues, there are several pieces of information and metrics that are beneficial:
- Name: The identifier of the queue.
- State: Whether the queue is running, paused, etc.
- Messages Ready: Messages in the queue ready to be delivered to consumers.
- Messages Unacknowledged: Messages delivered to a consumer but not yet acknowledged.
- Total Messages: The sum of ready and unacknowledged messages.
Here’s a summarized view:
| Metric | Description |
| Name | Identifier of the queue |
| State | Operational state of the queue |
| Messages Ready | Number of messages ready for delivery |
| Messages Unacknowledged | Messages delivered but not yet acknowledged |
| Total Messages | Sum of ready and unacknowledged messages |
Conclusion
Understanding how to list and analyze queues across different vhosts in RabbitMQ is crucial for effective message broker management. By using the RabbitMQ Management Interface, rabbitmqctl, or the HTTP API, administrators and developers can efficiently oversee and optimize the performance and reliability of their messaging environment.

