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.
RabbitMQ doesn't auto-retry — it's the consumer's responsibility.
Common patterns:
- Negative ack with requeue: catch exception, nack with requeue=true (avoid infinite loops).
- Dead-letter with retry: message fails, goes to DLX, a retry consumer waits N seconds then republishes to the original queue.
- Circuit breaker in consumer
To cap retries, inspect the x-death header — RabbitMQ populates it each time a message passes through a DLX.
Combine manual ack, dead-letters, and monitoring for robust retry handling.