Bird
Raised Fist0
RabbitMQdevops~10 mins

Reply-to queue pattern in RabbitMQ - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a temporary reply queue in RabbitMQ.

RabbitMQ
channel.queue_declare(queue=[1], exclusive=True)
Drag options to blanks, or click blank then click option'
A""
B"main_queue"
C"reply_queue"
D"task_queue"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a fixed queue name instead of an empty string.
Not setting the queue as exclusive.
2fill in blank
medium

Complete the code to set the reply_to property in the message properties.

RabbitMQ
channel.basic_publish(exchange='', routing_key='task_queue', properties=pika.BasicProperties(reply_to=[1]), body='Hello')
Drag options to blanks, or click blank then click option'
A"main_queue"
B"callback_queue"
Ccallback_queue
Dreply_queue
Attempts:
3 left
💡 Hint
Common Mistakes
Using a quoted string literal instead of the variable.
Using the wrong queue name.
3fill in blank
hard

Fix the error in the callback function to correctly acknowledge the message.

RabbitMQ
def on_response(ch, method, props, body):
    if props.correlation_id == corr_id:
        response = body
    ch.basic_ack([1])
Drag options to blanks, or click blank then click option'
Amethod.delivery_tag
Bprops.delivery_tag
Cbody.delivery_tag
Dch.delivery_tag
Attempts:
3 left
💡 Hint
Common Mistakes
Using properties or channel instead of method for delivery tag.
Not acknowledging the message at all.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps words to their lengths only if length is greater than 3.

RabbitMQ
{word: [1] for word in words if [2] > 3}
Drag options to blanks, or click blank then click option'
Alen(word)
Cword
Attempts:
3 left
💡 Hint
Common Mistakes
Using the word itself instead of its length.
Checking the word instead of its length in the condition.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps uppercase keys to values only if value is positive.

RabbitMQ
result = { [1]: [2] for k, v in data.items() if v [3] 0 }
Drag options to blanks, or click blank then click option'
Ak.upper()
Bv
C>
Dk.lower()
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase keys instead of uppercase.
Using wrong comparison operators.
Swapping keys and values.

Practice

(1/5)
1. What is the main purpose of the amq.rabbitmq.reply-to queue in RabbitMQ's reply-to queue pattern?
easy
A. To provide a temporary queue for direct replies without manual queue creation
B. To permanently store all messages sent to RabbitMQ
C. To route messages to multiple consumers simultaneously
D. To act as a dead-letter queue for failed messages

Solution

  1. Step 1: Understand the reply-to queue pattern

    The pattern uses a special queue to receive replies directly without creating separate queues manually.
  2. Step 2: Identify the role of amq.rabbitmq.reply-to

    This queue is a built-in temporary queue that simplifies reply handling by avoiding manual queue management.
  3. Final Answer:

    To provide a temporary queue for direct replies without manual queue creation -> Option A
  4. Quick Check:

    Reply-to queue = temporary direct reply queue [OK]
Hint: Remember reply-to queue is temporary and automatic [OK]
Common Mistakes:
  • Thinking it stores all messages permanently
  • Confusing it with dead-letter queues
  • Assuming it routes messages to many consumers
2. Which of the following is the correct way to set the reply-to property in a RabbitMQ message to use the reply-to queue pattern?
easy
A. Set reply-to to the consumer tag
B. Set reply-to to an empty string
C. Set reply-to to 'amq.rabbitmq.reply-to'
D. Set reply-to to the exchange name

Solution

  1. Step 1: Recall the special reply-to queue name

    The reply-to queue pattern uses the exact name 'amq.rabbitmq.reply-to' to indicate direct reply handling.
  2. Step 2: Match the correct reply-to property value

    Setting reply-to to 'amq.rabbitmq.reply-to' enables the client to receive replies on the special temporary queue.
  3. Final Answer:

    Set reply-to to 'amq.rabbitmq.reply-to' -> Option C
  4. Quick Check:

    Reply-to property = 'amq.rabbitmq.reply-to' [OK]
Hint: Use exact string 'amq.rabbitmq.reply-to' for reply-to [OK]
Common Mistakes:
  • Leaving reply-to empty disables replies
  • Using consumer tag instead of queue name
  • Confusing exchange name with reply-to queue
3. Given this simplified Python code snippet using pika library, what will be printed?
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.basic_publish(
    exchange='',
    routing_key='rpc_queue',
    properties=pika.BasicProperties(reply_to='amq.rabbitmq.reply-to'),
    body='Hello')

print('Message sent with reply-to')
connection.close()
medium
A. Message sent without reply-to
B. Message sent with reply-to
C. No output because connection is closed
D. Error: reply_to property invalid

Solution

  1. Step 1: Analyze the code message publishing

    The code publishes a message with reply_to set to 'amq.rabbitmq.reply-to', which is valid syntax.
  2. Step 2: Check the print statement execution

    After publishing, the print statement outputs the confirmation message before closing the connection.
  3. Final Answer:

    Message sent with reply-to -> Option B
  4. Quick Check:

    Print confirms message sent with reply-to [OK]
Hint: Print confirms message sent, no error if syntax correct [OK]
Common Mistakes:
  • Assuming reply_to causes error
  • Thinking connection close stops print
  • Confusing reply_to with routing_key
4. You wrote a RabbitMQ client that sets the reply-to property to 'amq.rabbitmq.reply-to' but never receives replies. What is the most likely cause?
medium
A. The exchange name is missing in the publish call
B. The reply-to queue name is misspelled
C. The routing key is incorrect
D. The client did not start consuming from the reply-to queue

Solution

  1. Step 1: Understand reply-to queue usage

    Using 'amq.rabbitmq.reply-to' requires the client to consume from this special queue to get replies.
  2. Step 2: Identify missing consumption

    If the client does not start consuming from the reply-to queue, replies will not be received despite correct reply-to setting.
  3. Final Answer:

    The client did not start consuming from the reply-to queue -> Option D
  4. Quick Check:

    Must consume reply-to queue to get replies [OK]
Hint: Always consume from reply-to queue to receive replies [OK]
Common Mistakes:
  • Ignoring consumption step
  • Assuming reply-to queue auto-delivers replies
  • Confusing routing key with reply-to queue
5. You want to implement an RPC client using RabbitMQ's reply-to queue pattern. Which sequence correctly describes the steps to send a request and receive a reply?
hard
A. Publish message with reply-to='amq.rabbitmq.reply-to', start consuming from reply-to queue, wait for reply
B. Create a new queue manually, publish message with reply-to set to new queue, consume from new queue
C. Publish message without reply-to, consume from default queue, wait for reply
D. Publish message with reply-to set to exchange name, consume from exchange

Solution

  1. Step 1: Use the special reply-to queue in publishing

    Set reply-to property to 'amq.rabbitmq.reply-to' to use the built-in temporary reply queue.
  2. Step 2: Start consuming from the reply-to queue

    Begin consuming from 'amq.rabbitmq.reply-to' to receive the server's reply message.
  3. Step 3: Wait and process the reply

    Wait for the reply message on the reply-to queue and process it as the RPC response.
  4. Final Answer:

    Publish message with reply-to='amq.rabbitmq.reply-to', start consuming from reply-to queue, wait for reply -> Option A
  5. Quick Check:

    Publish with reply-to + consume reply-to = RPC client [OK]
Hint: Publish with reply-to and consume reply-to for RPC [OK]
Common Mistakes:
  • Manually creating reply queues unnecessarily
  • Setting reply-to to exchange instead of queue
  • Not consuming from reply-to queue
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