AWS SQS là gì?
AWS SQS là dịch vụ message queue được AWS quản lý, dùng để:
-
Giao tiếp giữa các service
-
Xử lý task bất đồng bộ
-
Tách rời (decouple) hệ thống
2. Tại sao cần SQS?
Không dùng queue:
-
Service phụ thuộc trực tiếp
-
Dễ timeout
-
Khó scale
-
Xử lý async
-
Retry tự động
-
Scale độc lập
3. Cách SQS hoạt động
Producer → SQS Queue → Consumer (EC2 / Lambda / ECS)
-
Message được lưu trong queue
-
Consumer poll message
-
Xử lý xong → delete message
-
Không delete → message quay lại queue
4. Các loại SQS
Standard Queue
-
Throughput rất cao
-
Message có thể duplicate
-
Thứ tự không đảm bảo
-
Đảm bảo đúng thứ tự
-
Không duplicate
-
Throughput thấp hơn
-
Queue name phải kết thúc bằng
.fifo
5. Message Lifecycle
-
Producer gửi message
-
Consumer nhận message
-
Message bị ẩn (Visibility Timeout)
-
Consumer xử lý
-
Xoá message khỏi queue
6. Visibility Timeout
-
Thời gian message bị ẩn sau khi consumer nhận
-
Nên > thời gian xử lý task
-
Tránh xử lý trùng
7. Dead Letter Queue (DLQ)
-
Nơi chứa message lỗi
-
Message retry quá số lần cho phép → đưa vào DLQ
-
Giúp debug & tránh loop vô hạn
8. SQS dùng để làm gì?
Use case phổ biến
-
Xử lý email / notification
-
Order processing
-
Background job
-
Image / video processing
-
Event-driven architecture
9. SQS + Lambda
-
Lambda poll SQS tự động
-
Auto scale theo số message
-
Không cần quản lý consumer
10. SQS vs SNS vs EventBridge
| Dịch vụ | Mục đích |
| SQS | Queue (1 consumer hoặc nhiều) |
| SNS | Pub/Sub |
| EventBridge | Event routing |
11. Best Practices
-
Set visibility timeout hợp lý
-
Dùng DLQ
-
Message nhỏ, chứa ID thay vì data lớn
-
Idempotent consumer
-
Monitor bằng CloudWatch
12. Summary
SQS = Queue bền bỉ, scale lớn, dễ dùng
-
Giảm coupling
-
Xử lý async hiệu quả
-
Cốt lõi cho hệ thống distributed