What is RabbitMQ's publisher confirms?

Answer

Publisher confirms (publisher acknowledgements) ensure that messages from a producer were successfully accepted by the RabbitMQ broker. Without confirms, producers operate in fire-and-forget mode — a network failure or broker issue can silently lose messages. Enable: channel.confirmSelect(). Synchronous confirm: channel.basicPublish(...); channel.waitForConfirmsOrDie(5000) — blocks until the broker confirms or throws if unconfirmed within timeout. Asynchronous confirm: channel.addConfirmListener((sequenceNumber, multiple) -> handleAck, (sequenceNumber, multiple) -> handleNack). The broker sends Ack (message persisted) or Nack (message lost) with a sequence number. Use an in-memory map of pending messages keyed by sequence number — remove on Ack, retry on Nack. Publisher confirms + persistent messages + consumer acknowledgements form RabbitMQ's triple-guarantee for reliable message delivery. Without publisher confirms, message loss can occur between producer send and broker receipt.