Bird
Raised Fist0
RabbitMQdevops~20 mins

Queue length limits in RabbitMQ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Queue Length Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding RabbitMQ queue length limits

What happens when a RabbitMQ queue reaches its configured max-length limit?

AThe oldest messages are dropped to make room for new messages.
BMessages are moved to a dead-letter queue immediately.
CRabbitMQ automatically creates a new queue to handle overflow.
DThe queue stops accepting new messages and blocks producers.
Attempts:
2 left
💡 Hint

Think about how RabbitMQ manages limited queue sizes to avoid blocking producers.

❓ Configuration
intermediate
2:00remaining
Setting a max-length limit on a RabbitMQ queue

Which of the following commands correctly sets a max-length of 1000 messages on a queue named task_queue using rabbitmqctl?

Arabbitmqctl set_policy max_length_policy task_queue max-length=1000
Brabbitmqctl set_queue task_queue max-length=1000
Crabbitmqctl set_policy max_length_policy "^task_queue$" '{"max-length":1000}' --apply-to queues
Drabbitmqctl declare queue task_queue max-length=1000
Attempts:
2 left
💡 Hint

Policies are used to apply queue arguments like max-length in RabbitMQ.

💻 Command Output
advanced
2:00remaining
Interpreting queue length limit behavior

Given a queue with max-length set to 3, and the following sequence of published messages: msg1, msg2, msg3, msg4. What messages remain in the queue?

A["msg1", "msg2", "msg3", "msg4"]
B["msg1", "msg2", "msg3"]
C["msg3", "msg4"]
D["msg2", "msg3", "msg4"]
Attempts:
2 left
💡 Hint

Remember that the oldest messages are dropped when the max-length is exceeded.

❓ Troubleshoot
advanced
2:00remaining
Diagnosing message loss with queue length limits

A developer notices that some messages are missing from a RabbitMQ queue configured with max-length. Which of the following is the most likely cause?

AThe queue's max-length limit caused the oldest messages to be dropped.
BRabbitMQ crashed and lost messages in memory.
CThe messages were consumed by a consumer faster than expected.
DThe messages were moved to a dead-letter queue due to TTL expiration.
Attempts:
2 left
💡 Hint

Consider what happens when the queue reaches its max-length.

✅ Best Practice
expert
3:00remaining
Choosing queue length limit strategies for high-throughput systems

In a high-throughput RabbitMQ system, which queue length limit strategy helps prevent message loss while maintaining performance?

ASet a low <code>max-length</code> and rely on producers to retry on failure.
BSet a high <code>max-length</code> and use dead-letter exchanges to handle overflow.
CDisable <code>max-length</code> and allow unlimited queue growth.
DSet <code>max-length</code> to 1 to ensure only the latest message is kept.
Attempts:
2 left
💡 Hint

Think about balancing message retention and system stability.

Practice

(1/5)
1. What is the main purpose of setting a max-length limit on a RabbitMQ queue?
easy
A. To encrypt messages in the queue
B. To increase the speed of message delivery
C. To limit the number of messages the queue can hold to prevent overload
D. To allow unlimited messages in the queue

Solution

  1. Step 1: Understand queue length limits

    Queue length limits control how many messages a queue can hold to avoid memory overload.
  2. Step 2: Identify the purpose of max-length

    The max-length setting limits the number of messages to prevent backlog and resource exhaustion.
  3. Final Answer:

    To limit the number of messages the queue can hold to prevent overload -> Option C
  4. Quick Check:

    Queue length limits = prevent overload [OK]
Hint: Queue length limits prevent too many messages piling up [OK]
Common Mistakes:
  • Thinking max-length speeds up delivery
  • Confusing max-length with encryption
  • Assuming queues can hold unlimited messages
2. Which of the following is the correct syntax to set a queue length limit of 1000 messages using rabbitmqctl?
easy
A. rabbitmqctl set_policy mypolicy "^myqueue$" '{"max-length":1000}' --apply-to queues
B. rabbitmqctl set_policy mypolicy "myqueue" '{max-length=1000}' --apply-to queues
C. rabbitmqctl set_policy mypolicy "^myqueue$" '{max-length:1000}' --apply-to queues
D. rabbitmqctl set_policy mypolicy "^myqueue$" '{"max-length"=1000}' --apply-to queues

Solution

  1. Step 1: Review correct JSON syntax for policy

    The policy value must be a JSON string with double quotes around keys and values, e.g., '{"max-length":1000}'.
  2. Step 2: Check the full command syntax

    The correct command uses regex pattern with ^ and $ for exact queue name, and --apply-to queues to target queues.
  3. Final Answer:

    rabbitmqctl set_policy mypolicy "^myqueue$" '{"max-length":1000}' --apply-to queues -> Option A
  4. Quick Check:

    Correct JSON and command syntax = rabbitmqctl set_policy mypolicy "^myqueue$" '{"max-length":1000}' --apply-to queues [OK]
Hint: Use double quotes and JSON format for policy values [OK]
Common Mistakes:
  • Using single quotes inside JSON incorrectly
  • Missing regex anchors ^ and $
  • Using = instead of : in JSON
3. Given the policy set with rabbitmqctl set_policy limit1000 "^task_queue$" '{"max-length":1000}' --apply-to queues, what happens when the queue task_queue receives its 1001st message?
medium
A. The new message is rejected and not added to the queue
B. The oldest message in the queue is dropped to make room for the new one
C. The queue size automatically increases to hold the new message
D. RabbitMQ crashes due to overflow

Solution

  1. Step 1: Understand max-length behavior

    When max-length is reached, RabbitMQ drops oldest messages to keep queue size within limit.
  2. Step 2: Apply to the 1001st message

    On the 1001st message, the oldest message is removed to add the new one, maintaining max 1000 messages.
  3. Final Answer:

    The oldest message in the queue is dropped to make room for the new one -> Option B
  4. Quick Check:

    max-length reached = oldest message dropped [OK]
Hint: max-length drops oldest message, never rejects new [OK]
Common Mistakes:
  • Thinking new messages get rejected
  • Assuming queue size auto-expands
  • Believing RabbitMQ crashes on overflow
4. You tried to set a queue length limit with this command: rabbitmqctl set_policy limit "^queue$" '{max-length:500}' --apply-to queues but it did not work. What is the error?
medium
A. The JSON policy value keys and values must be double quoted strings
B. The JSON policy value uses colon instead of equal sign
C. The JSON policy value uses single quotes instead of double quotes
D. The regex pattern is missing anchors ^ and $

Solution

  1. Step 1: Check JSON syntax in policy

    JSON requires keys and string values to be double quoted, e.g., '{"max-length":500}'.
  2. Step 2: Identify the error in given command

    The command uses '{max-length:500}' without quotes around key, which is invalid JSON.
  3. Final Answer:

    The JSON policy value keys and values must be double quoted strings -> Option A
  4. Quick Check:

    JSON keys/values need double quotes [OK]
Hint: Always double quote keys and string values in JSON [OK]
Common Mistakes:
  • Using single quotes inside JSON
  • Using colon instead of colon (correct is colon)
  • Ignoring regex anchors (not error here)
5. You want to limit a queue named logs to 500 messages but also want to drop messages older than 1 hour. Which policy configuration correctly applies both limits?
hard
A. rabbitmqctl set_policy loglimit "^logs$" '{"max-length":500, "max-age":60}' --apply-to queues
B. rabbitmqctl set_policy loglimit "^logs$" '{"max-length":500, "max-age":3600}' --apply-to queues
C. rabbitmqctl set_policy loglimit "^logs$" '{"max-length":500, "max-age":60000}' --apply-to queues
D. rabbitmqctl set_policy loglimit "^logs$" '{"max-length":500, "max-age":3600000}' --apply-to queues

Solution

  1. Step 1: Understand max-age unit

    RabbitMQ's max-age is in milliseconds, so 1 hour = 3600000 ms.
  2. Step 2: Check policy JSON for both limits

    The policy must include both "max-length":500 and "max-age":3600000 correctly formatted.
  3. Final Answer:

    rabbitmqctl set_policy loglimit "^logs$" '{"max-length":500, "max-age":3600000}' --apply-to queues -> Option D
  4. Quick Check:

    1 hour = 3600000 ms, both limits set [OK]
Hint: Remember max-age is milliseconds, 1 hour = 3600000 [OK]
Common Mistakes:
  • Using seconds or minutes instead of milliseconds
  • Missing one of the limits in policy
  • Incorrect JSON formatting
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