Bird
Raised Fist0
RabbitMQdevops~20 mins

Publisher confirms in RabbitMQ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Publisher Confirms Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What does enabling publisher confirms in RabbitMQ do?

When a publisher enables publisher confirms in RabbitMQ, what is the main effect?

AMessages are encrypted end-to-end between publisher and consumer.
BThe publisher receives acknowledgments from the broker when messages are successfully handled.
CThe broker automatically retries sending messages if the consumer is slow.
DThe publisher can send messages without waiting for any confirmation.
Attempts:
2 left
💡 Hint

Think about how the publisher knows if the broker accepted the message.

💻 Command Output
intermediate
2:00remaining
What is the output when a publisher confirms channel is enabled in RabbitMQ CLI?

After enabling publisher confirms on a channel using RabbitMQ client, what output or state change should you expect?

RabbitMQ
channel.confirmSelect();
System.out.println(channel.waitForConfirms() ? "Confirmed" : "Not Confirmed");
AConfirmed
BNot Confirmed
CSyntaxError
DTimeoutException
Attempts:
2 left
💡 Hint

Assuming the broker accepted the message, what does waitForConfirms() return?

❓ Troubleshoot
advanced
2:00remaining
Why does waitForConfirms() throw TimeoutException in RabbitMQ?

When using publisher confirms, the method waitForConfirms() sometimes throws a TimeoutException. What is the most likely cause?

AThe message payload is too large for the broker to process.
BThe consumer has not acknowledged the message yet.
CThe publisher did not enable confirm mode on the channel.
DThe broker did not send an acknowledgment within the expected time.
Attempts:
2 left
💡 Hint

Consider what happens if the broker is slow or unresponsive.

🔀 Workflow
advanced
3:00remaining
Correct order of steps to use publisher confirms in RabbitMQ

Put the following steps in the correct order to properly use publisher confirms in RabbitMQ.

A1,3,2,4
B2,1,3,4
C1,2,3,4
D2,3,1,4
Attempts:
2 left
💡 Hint

Think about enabling confirm mode before publishing, then waiting for confirmation.

✅ Best Practice
expert
3:00remaining
Best practice to handle negative acknowledgments (nacks) with publisher confirms

When using publisher confirms, what is the best practice to handle messages that receive a negative acknowledgment (nack) from the broker?

ALog the nack and retry publishing the message after a delay.
BIgnore the nack and assume the message was delivered.
CImmediately close the channel and stop publishing messages.
DDelete the message from the queue to prevent duplicates.
Attempts:
2 left
💡 Hint

Consider how to ensure message delivery reliability after a nack.

Practice

(1/5)
1. What does enabling publisher confirms in RabbitMQ do?
easy
A. It automatically retries sending messages on failure.
B. It encrypts messages before sending.
C. It tells you if RabbitMQ accepted your message.
D. It queues messages without sending them.

Solution

  1. Step 1: Understand the purpose of publisher confirms

    Publisher confirms notify the sender if the message was accepted by RabbitMQ.
  2. Step 2: Compare with other options

    Retrying, encrypting, or queuing without sending are unrelated to confirms.
  3. Final Answer:

    It tells you if RabbitMQ accepted your message. -> Option C
  4. Quick Check:

    Publisher confirms = message acceptance notification [OK]
Hint: Publisher confirms confirm message acceptance by RabbitMQ [OK]
Common Mistakes:
  • Confusing confirms with message encryption
  • Thinking confirms retry messages automatically
  • Assuming confirms delay message sending
2. Which method must be called on a RabbitMQ channel to enable publisher confirms?
easy
A. enableConfirms()
B. setConfirmMode()
C. startConfirm()
D. confirmSelect()

Solution

  1. Step 1: Recall the correct method name

    The method to enable confirms on a channel is confirmSelect().
  2. Step 2: Verify other options

    Other method names like enableConfirms() or startConfirm() do not exist in RabbitMQ API.
  3. Final Answer:

    confirmSelect() -> Option D
  4. Quick Check:

    Enable confirms = confirmSelect() [OK]
Hint: Enable confirms by calling confirmSelect() on the channel [OK]
Common Mistakes:
  • Using incorrect method names like enableConfirms()
  • Forgetting to call confirmSelect() before publishing
  • Confusing confirmSelect() with waitForConfirms()
3. Given this code snippet, what will waitForConfirms() return if the message was accepted?
channel.confirmSelect();
channel.basicPublish(exchange, routingKey, props, body);
boolean confirmed = channel.waitForConfirms();
System.out.println(confirmed);
medium
A. false
B. true
C. null
D. Exception thrown

Solution

  1. Step 1: Understand waitForConfirms() behavior

    This method returns true if RabbitMQ accepted the message, false otherwise.
  2. Step 2: Given the message was accepted

    The variable confirmed will be true, so printing it outputs 'true'.
  3. Final Answer:

    true -> Option B
  4. Quick Check:

    Message accepted = waitForConfirms() returns true [OK]
Hint: waitForConfirms() returns true if message accepted [OK]
Common Mistakes:
  • Expecting waitForConfirms() to return false on success
  • Assuming it returns null or throws exception on success
  • Confusing waitForConfirms() with asynchronous callbacks
4. What is wrong with this code snippet for enabling publisher confirms?
channel.basicPublish(exchange, routingKey, props, body);
channel.confirmSelect();
boolean confirmed = channel.waitForConfirms();
medium
A. confirmSelect() must be called before basicPublish()
B. waitForConfirms() cannot be called after publishing
C. basicPublish() requires a callback parameter
D. confirmSelect() should be called after waitForConfirms()

Solution

  1. Step 1: Check order of method calls

    confirmSelect() must be called before publishing to enable confirms.
  2. Step 2: Identify the error

    In the snippet, confirmSelect() is called after basicPublish(), so confirms are not enabled when publishing.
  3. Final Answer:

    confirmSelect() must be called before basicPublish() -> Option A
  4. Quick Check:

    Enable confirms before publishing [OK]
Hint: Call confirmSelect() before publishing messages [OK]
Common Mistakes:
  • Calling confirmSelect() after publishing
  • Thinking waitForConfirms() disables confirms
  • Believing basicPublish() needs a callback for confirms
5. You want to ensure your application only proceeds after RabbitMQ confirms message acceptance. Which sequence of calls correctly implements this using publisher confirms?
hard
A. channel.confirmSelect(); channel.basicPublish(...); channel.waitForConfirms();
B. channel.basicPublish(...); channel.waitForConfirms(); channel.confirmSelect();
C. channel.waitForConfirms(); channel.confirmSelect(); channel.basicPublish(...);
D. channel.basicPublish(...); channel.confirmSelect(); channel.waitForConfirms();

Solution

  1. Step 1: Enable confirms before publishing

    Call confirmSelect() first to enable confirms on the channel.
  2. Step 2: Publish the message and wait for confirmation

    After basicPublish(...), call waitForConfirms() to block until RabbitMQ confirms acceptance.
  3. Final Answer:

    channel.confirmSelect(); channel.basicPublish(...); channel.waitForConfirms(); -> Option A
  4. Quick Check:

    Enable confirms, publish, then wait [OK]
Hint: Enable confirms, publish, then waitForConfirms() [OK]
Common Mistakes:
  • Calling confirmSelect() after publishing
  • Waiting for confirms before publishing
  • Not calling waitForConfirms() at all
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