Enable the federation plugin on both brokers: rabbitmq-plugins enable rabbitmq_federation rabbitmq_federation_management
On the downstream broker, define the upstream connection parameter: rabbitmqctl set_parameter federation-upstream my-upstream '{"uri": "amqp://user:pass@upstream-host", "ack-mode": "on-confirm", "trust-user-id": false}'
Create a policy on the downstream broker that applies federation to the target exchange: rabbitmqctl set_policy federate-orders 'orders' '{"federation-upstream": "my-upstream"}' --apply-to exchanges
Declare the exchange with identical type and durability settings on both brokers; federation creates an internal binding and upstream queue automatically
Verify the federation link status: GET /api/federation-links on the management HTTP API; confirm state=running and last_changed timestamp
Test: publish to the exchange on the upstream broker and confirm consumers on the downstream broker receive messages
Known gotchas
Federation copies messages only when a downstream queue has bindings to the federated exchange; if no consumer is bound downstream, messages are not pulled from upstream and accumulate there
ack-mode=on-confirm (the default) provides at-least-once delivery; ack-mode=no-ack is faster but loses messages if the downstream broker crashes before processing
Federation links use a dedicated AMQP connection per upstream; high fanout with many upstreams multiplies connection count — monitor connections and adjust connection limits accordingly
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