Bird
Raised Fist0
RabbitMQdevops~5 mins

Direct exchange in RabbitMQ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Direct Exchange in RabbitMQ?
A Direct Exchange routes messages to queues based on an exact match between the message's routing key and the queue's binding key.
Click to reveal answer
beginner
How does a Direct Exchange decide which queue to send a message to?
It sends the message to the queue(s) whose binding key exactly matches the message's routing key.
Click to reveal answer
intermediate
What happens if no queue is bound with a matching routing key in a Direct Exchange?
The message is discarded or returned to the sender if the message is marked as mandatory.
Click to reveal answer
beginner
Show the RabbitMQ command to declare a direct exchange named 'logs_direct'.
rabbitmqadmin declare exchange name=logs_direct type=direct
Click to reveal answer
intermediate
Explain the difference between a Direct Exchange and a Fanout Exchange.
A Direct Exchange routes messages based on exact routing key matches, while a Fanout Exchange broadcasts messages to all bound queues regardless of routing keys.
Click to reveal answer
What type of matching does a Direct Exchange use to route messages?
APattern matching with wildcards
BExact matching of routing keys
CBroadcast to all queues
DRandom queue selection
If a message's routing key is 'error' and a queue is bound with 'error', where will the message go?
ATo the queue bound with 'error'
BTo all queues
CNowhere, message is discarded
DTo queues with similar keys like 'errors'
Which command declares a direct exchange named 'my_direct'?
Arabbitmqadmin declare exchange name=my_direct type=direct
Brabbitmqadmin declare exchange name=my_direct type=fanout
Crabbitmqadmin declare queue name=my_direct
Drabbitmqadmin declare exchange name=my_direct type=topic
What happens if no queue matches the routing key in a Direct Exchange and the message is not mandatory?
AMessage is sent to all queues
BMessage is stored in a dead letter queue
CMessage is discarded
DMessage is returned to sender
Which exchange type broadcasts messages to all bound queues regardless of routing key?
AHeaders Exchange
BDirect Exchange
CTopic Exchange
DFanout Exchange
Describe how a Direct Exchange routes messages in RabbitMQ.
Think about how the message's routing key compares to the queue's binding key.
You got /4 concepts.
    Explain the difference between Direct Exchange and Fanout Exchange in RabbitMQ.
    One sends messages to specific queues, the other sends to all.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main behavior of a direct exchange in RabbitMQ?
      easy
      A. It broadcasts messages to all queues regardless of routing keys.
      B. It routes messages based on pattern matching of routing keys.
      C. It routes messages to queues with an exact matching routing key.
      D. It stores messages without routing them to any queue.

      Solution

      1. Step 1: Understand direct exchange routing

        A direct exchange routes messages only to queues whose binding key exactly matches the message's routing key.
      2. Step 2: Compare with other exchange types

        Unlike fanout (broadcast) or topic (pattern matching) exchanges, direct exchange requires exact key match.
      3. Final Answer:

        It routes messages to queues with an exact matching routing key. -> Option C
      4. Quick Check:

        Direct exchange = exact routing key match [OK]
      Hint: Direct exchange matches routing keys exactly [OK]
      Common Mistakes:
      • Confusing direct with fanout exchange behavior
      • Thinking direct exchange uses pattern matching
      • Assuming messages go to all queues regardless of keys
      2. Which of the following is the correct way to declare a direct exchange named logs_direct using RabbitMQ's command line tool rabbitmqadmin?
      easy
      A. rabbitmqadmin add exchange logs_direct type=fanout
      B. rabbitmqadmin declare exchange name=logs_direct type=direct
      C. rabbitmqadmin create exchange logs_direct direct
      D. rabbitmqadmin declare exchange logs_direct type=topic

      Solution

      1. Step 1: Recall rabbitmqadmin syntax for exchange declaration

        The correct syntax is: rabbitmqadmin declare exchange name=EXCHANGE_NAME type=EXCHANGE_TYPE
      2. Step 2: Match the command to declare a direct exchange named logs_direct

        rabbitmqadmin declare exchange name=logs_direct type=direct matches the syntax and specifies type=direct correctly.
      3. Final Answer:

        rabbitmqadmin declare exchange name=logs_direct type=direct -> Option B
      4. Quick Check:

        rabbitmqadmin declare exchange + name + type=direct [OK]
      Hint: Use 'declare exchange name=... type=direct' syntax [OK]
      Common Mistakes:
      • Using 'create' instead of 'declare'
      • Wrong exchange type like fanout or topic
      • Missing 'name=' before exchange name
      3. Given a direct exchange ex_direct with two queues bound: queue1 with routing key info and queue2 with routing key error. If a message is published with routing key info, which queues will receive the message?
      medium
      A. Only queue1
      B. Only queue2
      C. Both queue1 and queue2
      D. No queue receives the message

      Solution

      1. Step 1: Identify bindings and routing keys

        queue1 is bound with routing key 'info', queue2 with 'error'. The message has routing key 'info'.
      2. Step 2: Apply direct exchange routing rule

        Direct exchange routes messages only to queues with exact matching routing keys. So only queue1 matches.
      3. Final Answer:

        Only queue1 -> Option A
      4. Quick Check:

        Message routing key = queue binding key [OK]
      Hint: Message goes only to queues with exact routing key match [OK]
      Common Mistakes:
      • Assuming message goes to all queues
      • Confusing routing keys with patterns
      • Thinking queue2 also receives message
      4. You declared a direct exchange and bound a queue with routing key task. However, messages published with routing key tasks are not received by the queue. What is the most likely cause?
      medium
      A. Message payload is empty
      B. Exchange type is incorrectly set to fanout
      C. Queue is not declared properly
      D. Routing key mismatch between binding and message

      Solution

      1. Step 1: Check routing key binding and message key

        The queue is bound with routing key 'task' but messages are sent with 'tasks'. These keys differ.
      2. Step 2: Understand direct exchange routing behavior

        Direct exchange requires exact routing key match. A mismatch means the message won't be routed to the queue.
      3. Final Answer:

        Routing key mismatch between binding and message -> Option D
      4. Quick Check:

        Exact routing key match needed [OK]
      Hint: Check routing keys for exact spelling match [OK]
      Common Mistakes:
      • Assuming fanout exchange routes by keys
      • Blaming queue declaration without checking keys
      • Thinking empty payload blocks routing
      5. You have a direct exchange ex_direct with three queues bound: Q1 with routing key red, Q2 with routing key blue, and Q3 with routing key red. If you publish a message with routing key red, which queues receive the message and why?
      hard
      A. Q1 and Q3 both receive it because they share the same routing key
      B. No queue receives it because multiple bindings cause conflict
      C. Only Q3 receives it because it was bound last
      D. Only Q1 receives it because it was bound first

      Solution

      1. Step 1: Identify queues bound with routing key 'red'

        Q1 and Q3 are both bound with routing key 'red'. Q2 is bound with 'blue'.
      2. Step 2: Apply direct exchange routing logic

        Direct exchange routes messages to all queues with matching routing keys. So both Q1 and Q3 receive the message.
      3. Final Answer:

        Q1 and Q3 both receive it because they share the same routing key -> Option A
      4. Quick Check:

        Multiple queues with same key all get message [OK]
      Hint: Multiple queues with same key all get messages [OK]
      Common Mistakes:
      • Thinking only one queue receives the message
      • Assuming binding order affects routing
      • Believing multiple bindings cause conflicts
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard