
A shovel is used to move a message from a queue or exchange to a different queue or exchage. The queues or exchanges can reside on the same RabbitMQ node or on different RabbitMQ nodes.
AVOID TROUBLE
Before you can create a shovel, the rabbitmq_shovel plugin will need to be enabled, and you may want to also enable the rabbitmq_shovel_management plugin so that you can use Shovel Status and Shovel Management in the RabbitMQ web browser console and the RabbitMQ REST API to list/create/delete dynamic shovels. The rabbitmq-plugins list command can be used to determine if the plugins are enabled. If not, the rabbitmq-plugins enable command can be used to enable the plugins.
If the RabbitMQ node is not using SSL, the src-uri or dest-uri should start with amqp://. If SSL is being used, the src-uri or dest-uri should start with amqps://.
There are two types of shovels.
- Dynamic - Created using the rabbitmqctl set_parameter command, or using the RabbitMQ REST API, or using the RabbitMQ web browser console, or using Terraform
- Static - defined in advanced.config, node must be restarted to create/delete a static shovel
There are two similar but unique commands that can be used to list shovels.
- rabbitmqctl list_parameters to list the shovels in a virtual host (this article)
- rabbitmqctl shovel_status to display the status of every shovel running on the node
Here is an example of how you would use the rabbitmqctl command with the list_parameters option to list the shovels in a virtual host.
rabbitmqctl list_parameters --vhost vhost001
If there are no parameters in the virtual host, something like this should be returned.
~]# rabbitmqctl list_parameters --vhost vhost001
Listing runtime parameters for vhost "vhost001" ...
On the other hand, if there are parameters, something like this should be returned.
~]# rabbitmqctl list_parameters --vhost vhost001
Listing runtime parameters for vhost "vhost001" ...
component name value
shovel shovel001 {"ack-mode":"on-confirm","add-forward-headers":false,"delete-after":"never","dest-exchange":"exchange001","dest-uri":"amqp:///foo","prefetch-count":1000,"reconnect-delay":1,"src-exchange":"exchange002","src-exchange-key":"key001","src-uri":"amqp://garden_shovel:123abc@rabbitmq.example.com:5672/%2F"}
Did you find this article helpful?
If so, consider buying me a coffee over at