Bird
Raised Fist0
RabbitMQdevops~20 mins

Exactly-once processing strategies in RabbitMQ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Exactly-once Processing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Exactly-once delivery in RabbitMQ

Which RabbitMQ feature is essential to achieve exactly-once message processing?

AUsing publisher confirms and manual message acknowledgments
BEnabling automatic message acknowledgments
CUsing transient queues without persistence
DDisabling message acknowledgments entirely
Attempts:
2 left
💡 Hint

Think about how RabbitMQ ensures messages are not lost or duplicated during delivery.

💻 Command Output
intermediate
2:00remaining
Message acknowledgment behavior

What is the output of the following RabbitMQ consumer behavior when a message is received but the consumer crashes before sending an acknowledgment?

Consumer receives message with manual ack enabled
Consumer crashes before ack
AMessage is lost and not delivered again
BMessage is requeued and delivered again to another consumer
CMessage is acknowledged automatically despite crash
DMessage is deleted from the queue without processing
Attempts:
2 left
💡 Hint

Consider what happens to unacknowledged messages when a consumer disconnects unexpectedly.

🔀 Workflow
advanced
2:30remaining
Configuring RabbitMQ for exactly-once processing

Which sequence of steps correctly configures RabbitMQ to support exactly-once message processing?

ADeclare exclusive queues, disable publisher confirms, use manual acks, and avoid idempotency
BDeclare transient queues, disable publisher confirms, use automatic acks, and rely on consumer retries
CDeclare durable queues, enable publisher confirms, use manual acks, and implement idempotent consumers
DDeclare durable queues, disable publisher confirms, use automatic acks, and implement idempotent consumers
Attempts:
2 left
💡 Hint

Think about durability, acknowledgment, and consumer design for exactly-once guarantees.

❓ Troubleshoot
advanced
2:30remaining
Duplicate message processing despite manual acks

A RabbitMQ consumer with manual acknowledgments processes some messages twice after a network failure. What is the most likely cause?

AThe consumer used automatic acknowledgments
BThe queue was declared as durable
CPublisher confirms were enabled on the producer
DThe consumer did not implement idempotent processing logic
Attempts:
2 left
💡 Hint

Consider what happens when a message is delivered more than once and how the consumer handles it.

✅ Best Practice
expert
3:00remaining
Ensuring exactly-once processing in distributed RabbitMQ systems

In a distributed system using RabbitMQ clusters, which practice best supports exactly-once processing across multiple consumers and nodes?

AUse consistent hashing to route messages to the same consumer and implement idempotent processing
BUse automatic acknowledgments and rely on message ordering guarantees
CDisable publisher confirms to improve throughput and use transient queues
DUse exclusive queues per consumer to avoid message duplication
Attempts:
2 left
💡 Hint

Think about message routing consistency and consumer processing behavior in clusters.

Practice

(1/5)
1. What does "exactly-once processing" mean in RabbitMQ?
easy
A. Each message is processed only one time without duplicates
B. Messages are processed at least once, possibly multiple times
C. Messages are processed only if the queue is empty
D. Messages are processed without any acknowledgments

Solution

  1. Step 1: Understand message processing guarantees

    Exactly-once means no message is lost or processed more than once.
  2. Step 2: Compare options with definition

    Only Each message is processed only one time without duplicates matches the definition of exactly-once processing.
  3. Final Answer:

    Each message is processed only one time without duplicates -> Option A
  4. Quick Check:

    Exactly-once = single processing [OK]
Hint: Exactly-once means no repeats or losses in processing [OK]
Common Mistakes:
  • Confusing exactly-once with at-least-once processing
  • Ignoring the role of acknowledgments
  • Thinking messages process only when queue is empty
2. Which RabbitMQ feature helps ensure messages are not lost during processing?
easy
A. Automatic message deletion
B. Disabling publisher confirms
C. Unlimited queue length
D. Manual message acknowledgments

Solution

  1. Step 1: Identify message loss prevention methods

    Manual acknowledgments let consumers confirm message processing before removal.
  2. Step 2: Evaluate options for loss prevention

    Only manual acknowledgments ensure messages aren't lost if consumer fails.
  3. Final Answer:

    Manual message acknowledgments -> Option D
  4. Quick Check:

    Manual ack = message safe until confirmed [OK]
Hint: Manual ack confirms message processed safely [OK]
Common Mistakes:
  • Assuming automatic deletion prevents loss
  • Thinking unlimited queue length affects message safety
  • Disabling confirms helps reliability (it doesn't)
3. Given this consumer code snippet, what happens if the consumer crashes before ack?
channel.basic_consume(queue='task_queue', on_message_callback=callback)

def callback(ch, method, properties, body):
    process_message(body)
    # no ack sent here
medium
A. Message is lost and not requeued
B. Message remains unacknowledged and will be redelivered
C. Message is acknowledged automatically
D. Queue deletes the message immediately

Solution

  1. Step 1: Understand manual ack behavior

    If no ack is sent, RabbitMQ keeps message unacknowledged.
  2. Step 2: Effect of consumer crash before ack

    RabbitMQ will redeliver unacknowledged messages to another consumer.
  3. Final Answer:

    Message remains unacknowledged and will be redelivered -> Option B
  4. Quick Check:

    No ack = redelivery on crash [OK]
Hint: No ack means message redelivery on failure [OK]
Common Mistakes:
  • Assuming message is lost without ack
  • Thinking messages auto-acknowledge by default
  • Believing queue deletes messages immediately
4. You notice duplicate message processing in your RabbitMQ consumer. Which fix helps ensure exactly-once processing?
medium
A. Implement idempotent message handling and manual acks
B. Disable publisher confirms
C. Use automatic acknowledgments
D. Increase queue prefetch count

Solution

  1. Step 1: Identify cause of duplicates

    Duplicates often occur if messages are reprocessed after failure or redelivery.
  2. Step 2: Apply exactly-once strategies

    Idempotent handling plus manual acknowledgments prevent duplicate side effects.
  3. Final Answer:

    Implement idempotent message handling and manual acks -> Option A
  4. Quick Check:

    Idempotent + manual ack = exactly-once [OK]
Hint: Idempotent code + manual ack stops duplicates [OK]
Common Mistakes:
  • Using automatic ack causes duplicates
  • Disabling confirms reduces reliability
  • Increasing prefetch doesn't fix duplicates
5. To achieve exactly-once processing in RabbitMQ, which combination is best practice?
hard
A. Automatic acknowledgments with no idempotency
B. Using only transactions without manual acknowledgments
C. Manual acknowledgments, idempotent consumer code, and publisher confirms
D. Disabling transactions and using auto-delete queues

Solution

  1. Step 1: Review exactly-once requirements

    Exactly-once needs safe message delivery, no duplicates, and confirmed processing.
  2. Step 2: Match features to requirements

    Manual acks confirm processing, idempotent code avoids duplicates, publisher confirms ensure message sent.
  3. Step 3: Eliminate incorrect options

    Automatic ack or disabling transactions risk message loss or duplicates.
  4. Final Answer:

    Manual acknowledgments, idempotent consumer code, and publisher confirms -> Option C
  5. Quick Check:

    Manual ack + idempotent + confirms = exactly-once [OK]
Hint: Combine manual ack, idempotency, and confirms for safety [OK]
Common Mistakes:
  • Relying on automatic acknowledgments alone
  • Ignoring idempotent consumer design
  • Assuming transactions alone guarantee exactly-once
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