RabbitMQ không tự retry message bị lỗi — đó là nhiệm vụ của consumer.
Các pattern phổ biến:
- Nack + requeue: consumer bắt exception, gửi nack với requeue=true, message quay lại queue (cần cẩn thận để tránh loop vô hạn).
- Dead-letter + retry: message fail → dead-letter queue → retry consumer đợi N giây rồi republish lên queue gốc.
- Circuit breaker: phát hiện liên tục fail, tạm dừng consume, kiểm tra sau
Để cap số lần retry, consumer đọc header x-death — RabbitMQ populate header này mỗi khi message đi qua DLX.
Kết hợp manual ack, DLX, và monitoring tạo nên retry handling robust.