Hiện tại em đang tìm hiểu về RabbitMQ sẵn tiện làm thử ứng dụng phổ biến nhất là gửi email dùng Spring + RabbitMQ.
Em đang bật chế độ manual cho ack khi nhận tin nhắn từ RabbitMQ ở RabbitListener
Luồng xử lý của em cơ bản là như thế này:
- Khi gửi mail thành công sẽ gọi câu lệnh basic.Ack để thông báo là nhận thành công và RMQ sẽ xóa tin nhắn đó khỏi Queue.
- Khi gửi thất bại (nhảy vào catch) thì sẽ gọi câu lệnh basic.Nack để gửi tin nhắn trở lại Queue.
Nhưng vấn đề em gặp phải là nếu gọi câu lệnh basic.Nack thì sẽ bị 1 vòng lặp vô tận => tin nhắn khi requeue xong lại nhận xong lại requeue vô tận.
Mọi người cho em hỏi là trong trường hợp của em thì nên xử lý như thế nào là ổn nhất với tin nhắn đang bị lỗi đó ạ (Tại vì nếu loop vô tận như v thì sẽ ko ổn tí nào).Có nên lưu tin nhắn ở đâu đó xong 1 khoảng thời gian sau resend 1 số lần nhất định thì có được không ạ?
Cảm ơn mọi người!