Publisher confirm là một cơ chế trong đó RabbitMQ acknowledge cho producer rằng nó đã nhận (và lưu) một message — đảm bảo message không bị mất ở phía publishing. Chúng là phần đối ứng phía producer với consumer acknowledgment.
Vấn đề: message có đến được broker không?
Khi một producer publish một message, mặc định nó không BIẾT liệu RabbitMQ có nhận được nó không:
→ lỗi mạng, vấn đề broker → message có thể bị MẤT mà producer không biết
→ cho độ tin cậy, producer cần XÁC NHẬN rằng message đã được chấp nhận
→ publisher confirm xử lý phía PUBLISHING của độ tin cậy
Cách publisher confirm hoạt động
PUBLISHER CONFIRM → broker gửi một ACK trở lại producer cho mỗi message:
→ bật chế độ confirm trên channel
→ broker ACK một message khi nó đã chịu trách nhiệm (nhận nó; cho persistent
message trên durable queue → khi đã lưu xuống đĩa)
→ NACK → broker không thể xử lý message (producer có thể thử lại)
→ producer BIẾT mỗi message đã được chấp nhận (hay không) → không mất âm thầm
