0
0
RabbitMQdevops~20 mins

Retry patterns with exponential backoff in RabbitMQ - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Exponential Backoff Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding exponential backoff in RabbitMQ retries

What is the main purpose of using exponential backoff in retry patterns with RabbitMQ?

ATo increase the delay between retries exponentially to reduce load and avoid flooding the server
BTo immediately retry messages without any delay to speed up processing
CTo decrease the delay between retries exponentially to quickly discard failed messages
DTo send duplicate messages to multiple queues simultaneously
Attempts:
2 left
💡 Hint

Think about how retrying too fast can affect system stability.

💻 Command Output
intermediate
1:30remaining
RabbitMQ delayed retry queue TTL behavior

Given a RabbitMQ delayed retry queue with a TTL (time-to-live) of 5000 ms and dead-letter exchange set to the main queue, what happens when a message expires in the delayed queue?

RabbitMQ
Queue: retry_queue
TTL: 5000 ms
Dead-letter exchange: main_exchange

Message published to retry_queue
AThe message stays in retry_queue indefinitely
BThe message is deleted after 5 seconds and lost
CThe message is moved to the main queue after 5 seconds
DThe message is immediately moved to the main queue without delay
Attempts:
2 left
💡 Hint

Consider what dead-letter exchange does when TTL expires.

Configuration
advanced
2:00remaining
Configuring exponential backoff retry queues in RabbitMQ

Which configuration snippet correctly sets up three retry queues with exponential backoff delays of 1s, 2s, and 4s using TTL and dead-lettering?

Aretry_1s: TTL=1000, DLX=main_exchange; retry_2s: TTL=2000, DLX=main_exchange; retry_4s: TTL=4000, DLX=main_exchange
Bretry_1s: TTL=1000, DLX=retry_2s; retry_2s: TTL=2000, DLX=retry_4s; retry_4s: TTL=4000, DLX=main_exchange
Cretry_1s: TTL=4000, DLX=retry_2s; retry_2s: TTL=2000, DLX=retry_4s; retry_4s: TTL=1000, DLX=main_exchange
Dretry_1s: TTL=1000, DLX=retry_4s; retry_2s: TTL=2000, DLX=retry_1s; retry_4s: TTL=4000, DLX=main_exchange
Attempts:
2 left
💡 Hint

Think about chaining queues so each delay leads to the next longer delay.

Troubleshoot
advanced
2:00remaining
Diagnosing retry storm in RabbitMQ exponential backoff setup

You notice a retry storm where messages are retried rapidly without delay despite having TTLs set on retry queues. What is the most likely cause?

AMessages are published with immediate flag set, bypassing retry queues
BTTL values are too high, causing messages to retry too slowly
CMain queue is configured with a TTL causing messages to expire prematurely
DDead-letter exchange is not set correctly on retry queues, so messages do not move to next delay queue
Attempts:
2 left
💡 Hint

Check if messages are moving between retry queues as expected.

🔀 Workflow
expert
2:30remaining
Designing a robust exponential backoff retry workflow in RabbitMQ

Which workflow correctly implements a robust exponential backoff retry pattern with 3 retries and final dead-lettering for failed messages?

AMessage fails → retry_1s queue (TTL 1s) → retry_2s queue (TTL 2s) → retry_4s queue (TTL 4s) → dead-letter queue for manual review
BMessage fails → retry_4s queue (TTL 4s) → retry_2s queue (TTL 2s) → retry_1s queue (TTL 1s) → main queue
CMessage fails → main queue → retry_1s queue (TTL 1s) → retry_2s queue (TTL 2s) → retry_4s queue (TTL 4s)
DMessage fails → dead-letter queue → retry_1s queue (TTL 1s) → retry_2s queue (TTL 2s) → retry_4s queue (TTL 4s)
Attempts:
2 left
💡 Hint

Consider the order of queues and where final failed messages should go.