Pick an exchange, enter a routing key or headers, and see which queues the message lands in, step by step: topic wildcards, headers x-match, exchange-to-exchange bindings and alternate exchanges. Use your definitions export, or type a few bindings by hand. The matching was checked against a real RabbitMQ 4.3.6 with 48 test cases.
It runs in your browser; nothing is sent anywhere. Users, password hashes and permissions in the file are ignored. The export stays in this browser tab, so the other three tools pick it up without pasting it again.
One name=value per line, or a JSON object. Unquoted whole numbers and true/false are sent as numbers and booleans, "1" in quotes as a string; RabbitMQ compares type and value, so the string "1" does not match the number 1.
* is exactly one word, # zero or more, so orders.* does not match orders.eu.created but orders.# does. An empty key has no words at all: * does not match it, # does.x-match a binding means all: every header in the binding must be in the message with the same type and value. any needs one. Both ignore binding arguments that start with x-; all-with-x and any-with-x include them. The routing key is ignored."") routes to the queue with the key's name.mandatory=True to get it back as a basic.return, or give the exchange an alternate exchange that catches it.