Enable the shovel plugin: rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management
Define a dynamic shovel via the runtime parameter API: PUT /api/parameters/shovel/%2F/my-shovel with a JSON body containing src-uri, src-queue, dest-uri, dest-queue, and ack-mode
Set ack-mode to on-confirm for at-least-once reliability; the shovel will only ack the source message after the destination broker confirms receipt
Set src-prefetch-count to limit how many unacknowledged messages the shovel holds in-flight; prevents memory pressure if the destination is slow
Monitor shovel state: GET /api/shovels and confirm state=running; check message transfer rates in the management UI
Delete or update a running shovel without restart: DELETE /api/parameters/shovel/%2F/my-shovel to stop it, then re-PUT with new parameters
Known gotchas
Dynamic shovels are stored in the Mnesia database and replicated across the cluster; a shovel defined on one node is automatically started on exactly one node but restarts on another if that node fails
src-uri and dest-uri must include credentials in the URI (amqp://user:pass@host); use vhost-encoded paths (%2F for the default vhost) or the shovel will connect to the wrong vhost
Shovel differs from federation in that it moves (dequeues) messages from the source; once shovelled, messages are gone from the source queue — do not use shovel when you need the source to retain a copy
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp