A routing key is a string attached to a message that the exchange uses to decide how to route the message to queues.
Click to reveal answer
beginner
What is a binding key in RabbitMQ?
A binding key is a pattern or string used by a queue to bind itself to an exchange, telling the exchange which messages to send to that queue.
Click to reveal answer
intermediate
How does a direct exchange use routing keys and binding keys?
A direct exchange routes messages to queues where the routing key exactly matches the binding key.
Click to reveal answer
intermediate
What is the role of wildcards in binding keys with topic exchanges?
Wildcards like '*' (matches exactly one word) and '#' (matches zero or more words) allow flexible matching of routing keys to binding keys in topic exchanges.
Click to reveal answer
beginner
Why are binding keys important in message routing?
Binding keys define which messages a queue receives by specifying patterns that match routing keys, enabling selective message delivery.
Click to reveal answer
What does a routing key do in RabbitMQ?
AIt binds a queue to an exchange
BIt tells the exchange how to route the message
CIt stores messages in the queue
DIt deletes messages from the queue
✗ Incorrect
The routing key is used by the exchange to decide where to send the message.
Which exchange type uses exact matching between routing key and binding key?
AHeaders exchange
BFanout exchange
CTopic exchange
DDirect exchange
✗ Incorrect
Direct exchanges route messages only when routing key exactly matches the binding key.
In a topic exchange, what does the '#' wildcard in a binding key mean?
AMatch zero or more words
BMatch only numbers
CMatch no words
DMatch exactly one word
✗ Incorrect
The '#' wildcard matches zero or more words in the routing key.
What is the purpose of a binding key?
ATo connect a queue to an exchange with a pattern
BTo delete a queue
CTo send messages to an exchange
DTo encrypt messages
✗ Incorrect
Binding keys connect queues to exchanges and define which messages the queue receives.
Which exchange type ignores routing keys and sends messages to all bound queues?
ADirect exchange
BTopic exchange
CFanout exchange
DHeaders exchange
✗ Incorrect
Fanout exchanges broadcast messages to all queues regardless of routing keys.
Explain how routing keys and binding keys work together to route messages in RabbitMQ.
Think about how a message finds the right queue.
You got /4 concepts.
Describe the difference between direct and topic exchanges in terms of binding keys and routing keys.
Focus on how matching rules differ.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a binding key in RabbitMQ?
easy
A. To label messages for routing
B. To create a new exchange
C. To connect a queue to an exchange and filter messages
D. To delete a queue
Solution
Step 1: Understand the role of binding keys
Binding keys link queues to exchanges and decide which messages the queue receives.
Step 2: Differentiate from routing keys
Routing keys label messages, but binding keys filter messages for queues.
Final Answer:
To connect a queue to an exchange and filter messages -> Option C
Quick Check:
Binding key = filter for queues [OK]
Hint: Binding keys link queues to exchanges filtering messages [OK]
Common Mistakes:
Confusing binding keys with routing keys
Thinking binding keys create exchanges
Assuming binding keys delete queues
2. Which of the following is the correct syntax to bind a queue named myQueue to an exchange myExchange with a binding key key.* using RabbitMQ CLI?
easy
A. rabbitmqadmin declare binding source=myExchange destination=myQueue routing_key=key.*
B. rabbitmqctl bind_queue myExchange myQueue key.*
C. rabbitmqctl declare binding myQueue myExchange key.*
D. rabbitmqadmin bind myQueue myExchange key.*
Solution
Step 1: Identify the correct RabbitMQ CLI command
The rabbitmqadmin declare binding command is used to create bindings with source, destination, and routing_key parameters.
Step 2: Match parameters to syntax
Source is the exchange, destination is the queue, and routing_key is the binding key pattern.
Final Answer:
rabbitmqadmin declare binding source=myExchange destination=myQueue routing_key=key.* -> Option A
Quick Check:
Use rabbitmqadmin declare binding with source, destination, routing_key [OK]
Hint: Use rabbitmqadmin declare binding with source, destination, routing_key [OK]
Common Mistakes:
Using rabbitmqctl bind_queue which is not a valid command
Swapping queue and exchange names
Omitting routing_key parameter
3. Given a topic exchange with a queue bound using binding key logs.*.error, which routing key will deliver a message to this queue?
medium
A. logs.system.error
B. logs.error.system
C. logs.system.warning
D. error.logs.system
Solution
Step 1: Understand the binding key pattern
The binding key logs.*.error matches routing keys with three words where the first is 'logs', the second can be any word, and the third is 'error'.
Step 2: Match each option to the pattern
logs.system.error: 'logs.system.error' matches exactly. logs.error.system: 'logs.error.system' ends with 'system', not 'error'. logs.system.warning: 'logs.system.warning' ends with 'warning', not 'error'. error.logs.system: 'error.logs.system' does not start with 'logs'.
Hint: Match binding key wildcards to routing key words [OK]
Common Mistakes:
Ignoring position of words in routing key
Confusing '*' wildcard with '#' wildcard
Assuming partial matches are enough
4. You have a queue bound to a topic exchange with binding key data.#. You send a message with routing key data but it is not received by the queue. What is the likely cause?
medium
A. Binding key data.# does not match routing key data
B. Routing key data should be data.#
C. Queue is not bound to the exchange
D. Binding key data.# matches routing key data, so the problem is elsewhere
Solution
Step 1: Check if binding key matches routing key
The binding key data.# matches routing keys starting with 'data' and zero or more words after. The routing key 'data' matches because '#' can match zero words.
Step 2: Consider other causes
Since the binding key matches, the message not arriving is likely due to other issues like queue not bound or exchange type mismatch.
Final Answer:
Binding key data.# matches routing key data, so the problem is elsewhere -> Option D
Quick Check:
Binding key '#' matches zero or more words [OK]
Hint: Remember '#' matches zero or more words including none [OK]
Common Mistakes:
Thinking '#' requires at least one word
Assuming routing key must equal binding key exactly
Ignoring other configuration issues
5. You want to route messages with routing keys order.created and order.updated to a queue named orderQueue using a topic exchange. Which most specific binding key should you use to receive both types of messages?
hard
A. order.created, order.updated
B. order.*
C. *.created, *.updated
D. order.#
Solution
Step 1: Understand routing keys and binding keys
Routing keys are 'order.created' and 'order.updated'. The binding key must match both.
Step 2: Analyze each binding key option
order.*: 'order.*' matches 'order.created' and 'order.updated' because '*' matches exactly one word. order.#: 'order.#' matches these and more, but is broader than needed. *.created, *.updated: '*.created, *.updated' do not match because the first word must be 'order'. order.created, order.updated: 'order.created, order.updated' is not valid syntax for a single binding key; multiple bindings needed.
Final Answer:
order.* -> Option B
Quick Check:
'order.*' matches 'order.created' and 'order.updated' [OK]
Hint: Use 'order.*' to match one word after 'order' [OK]
Common Mistakes:
Using '#' when '*' is enough
Trying to use multiple keys in one binding key string
Misplacing wildcards in binding keys
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.