Publisher confirm은 RabbitMQ가 메시지를 받았(고 영속화했)음을 producer에게 확인해주는 메커니즘으로, 발행 측에서 메시지가 손실되지 않도록 보장합니다. consumer acknowledgment의 producer 측 대응물입니다.
문제: 메시지가 broker에 도달했는가?
producer가 메시지를 발행할 때, 기본적으로 RabbitMQ가 받았는지 알지 못함:
→ 네트워크 실패, broker 문제 → producer가 모르는 채 메시지가 LOST될 수 있음
→ 신뢰성을 위해 producer는 메시지가 수락되었다는 CONFIRMATION이 필요
→ publisher confirm은 신뢰성의 PUBLISHING 측면을 다룸
publisher confirm 동작 방식
PUBLISHER CONFIRM → broker가 각 메시지에 대해 producer에게 ACK를 보냄:
→ channel에서 confirm 모드를 활성화
→ broker가 책임을 진 시점에 메시지를 ACK (받았을 때; durable queue의 persistent
메시지는 → 디스크에 영속화된 시점)
→ NACK → broker가 메시지를 처리할 수 없었음 (producer가 재시도 가능)
→ producer가 각 메시지가 수락(또는 거부)되었음을 앎 → 조용한 손실 없음
