Hiểu Rõ SQS Visibility Timeout: Tại Sao Message Bị Xử Lý Hai Lần?
Bạn đang chạy một hệ thống xử lý đơn hàng, consumer đọc message từ SQS, nhưng log lại cho thấy cùng một message được xử lý bởi hai worker khác nhau — đôi khi dẫn đến giao dịch trùng lặp. Đây là triệu chứng kinh điển của SQS Visibility Timeout bị cấu hình sai, và nó thường bị bỏ qua cho đến khi production bắt đầu có vấn đề. TL;DR — SQS Visibility Timeout là gì và tại sao nó quan trọng Vấn đề Nguyên nhân Giải pháp Message bị xử lý hai lần Visibility Timeout ngắn hơn thời gian xử lý thực tế Tăng timeout hoặc dùng ChangeMessageVisibility Message không bao giờ bị xóa Consumer xử lý xong nhưng quên gọi DeleteMessage Luôn xóa message sau khi xử lý thành công Message kẹt trong queue mãi mãi Consumer crash trước khi timeout hết Cấu hình Dead Letter Queue Cơ Chế Hoạt Động Của SQS Visibility Timeout SQS không phải là message broker theo mô hình push — consumer chủ động poll để nhận message. Khi một consumer gọi ...