Chuyển đến nội dung chính

Amazon Simple Queue Service (SQS): Hướng dẫn Toàn diện

Hướng dẫn này dạy bạn cách tạo, quản lý và sử dụng hàng đợi Amazon SQS để xây dựng ứng dụng phân tán có khả năng mở rộng trên AWS, với ví dụ thực tế bằng console và CLI.
Đã cập nhật 5 thg 10, 2026  · 15 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Amazon Simple Queue Service (SQS) là dịch vụ xếp hàng thông điệp được quản lý hoàn toàn do Amazon Web Services (AWS) cung cấp. Dịch vụ này cho phép tách rời và mở rộng quy mô các hệ thống phân tán, vi dịch vụ (microservices) và ứng dụng serverless.

Hướng dẫn này giúp bạn hiểu rõ về AWS SQS, bao gồm các tính năng và quy trình thiết lập, quản lý hàng đợi. Nội dung cũng hướng dẫn cách gửi và nhận thông điệp, xem xét mô hình định giá, khám phá giám sát và số liệu, so sánh SQS với SNS, và chia sẻ các thực tiễn tốt nhất để sử dụng tối ưu. 

Nếu bạn chưa có nền tảng về AWS, khóa học Introduction to AWS của chúng tôi là điểm khởi đầu tốt. Khóa học giúp bạn khám phá thế giới Amazon Web Services và hiểu vì sao AWS dẫn đầu trong lĩnh vực điện toán đám mây.

AWS SQS là gì?

Trước khi đi vào chi tiết, hãy cùng tìm hiểu AWS SQS là gì và vì sao nó có giá trị trong hệ sinh thái AWS.

AWS SQS architecture diagram

Sơ đồ kiến trúc Amazon SQS

AWS SQS là hệ thống xếp hàng phân tán cho phép các ứng dụng web nhanh chóng và tin cậy đưa thông điệp do bên sản xuất (producers) tạo ra vào hàng đợi để bên tiêu thụ (consumers) xử lý.

Hàng đợi đóng vai trò là kho tạm thời cho các thông điệp chờ xử lý. Amazon SQS còn cung cấp khả năng thử lại (retry) qua chính sách redrive, cho phép thử lại nhiều lần và sử dụng hàng đợi thư chết (DLQ) để quản lý các thông điệp dễ lỗi bằng cách thông báo cho nhà phát triển về sự cố và tùy chọn lưu trữ thông điệp để xử lý lại sau.

Tính năng và lợi ích của SQS

Việc sử dụng SQS mang lại nhiều lợi ích, gồm nhưng không giới hạn ở những điểm sau:

AWS SQS key features and benefits

Các tính năng và lợi ích chính của AWS SQS

  • Khả năng mở rộng: SQS có thể xử lý mọi lưu lượng mà không yêu cầu bạn cung cấp hay quản lý hạ tầng.
  • Độ bền: Thông điệp được lưu trữ dự phòng trên nhiều vùng khả dụng.
  • Tính sẵn sàng: Cung cấp độ sẵn sàng cao cho việc tạo và tiêu thụ thông điệp.
  • Bảo mật: Cung cấp mã hóa phía máy chủ (SSE) để bảo vệ nội dung thông điệp.
  • Linh hoạt: Hỗ trợ nhiều định dạng thông điệp và có thể dùng với nhiều dịch vụ AWS khác.

Tình huống sử dụng trong tách rời và mở rộng microservices

Nhiều trường hợp sử dụng trong ngành có thể tận dụng lợi ích của SQS, một số minh họa dưới đây:

AWS SQS use cases in decoupling and scaling microservices

Trường hợp sử dụng AWS SQS trong tách rời và mở rộng microservices

  • Hàng đợi công việc (Work queue): Phân phối tác vụ cho nhiều tiến trình xử lý.
  • Bộ đệm cho ghi cơ sở dữ liệu: Bảo vệ cơ sở dữ liệu khỏi tải ghi quá mức.
  • Giảm tải yêu cầu (Request offloading): Chuyển các thao tác chậm ra khỏi luồng yêu cầu tương tác.
  • Xử lý theo lô (Batch processing): Thu thập và xử lý một nhóm thông điệp cùng lúc.

Thiết lập AWS SQS

Giờ chúng ta đã hiểu SQS là gì, hãy xem cách thiết lập. Phần này hướng dẫn bạn qua các yêu cầu tiên quyết và cách truy cập console SQS.

Yêu cầu tiên quyết

Trước khi bắt đầu sử dụng AWS SQS, hãy đảm bảo bạn có:

  • Một tài khoản AWS đang hoạt động. Có thể tạo từ trang chính thức.
  • Các vai trò và quyền IAM cần thiết để truy cập SQS.

Để thiết lập quyền IAM:

  • Vào console IAM.
  • Tạo một policy mới.

Setting Up AWS SQS

Thiết lập AWS SQS

  • Có hai cách chính để tạo policy: trực quan hoặc JSON. Trong trường hợp này, chúng ta dùng cách trực quan, trực quan hơn. 
  • Chọn “SQS” trong khu vực “Service” và đặt Effect thành “Allow” cho các quyền sau: sqs:CreateQueue, sqs:DeleteQueue, sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage.

Setting Up AWS SQS

Thiết lập AWS SQS

  • Cho phép các hành động truy cập “All” tài nguyên, rồi chọn “Next”.
  • Đặt tên cho policy, trong ví dụ này là “SQSHandsOnPolicies”, và tạo policy.

Setting Up AWS SQS

Thiết lập AWS SQS

Policy cuối cùng sẽ trông như sau ở định dạng JSON:

Setting Up AWS SQS

Thiết lập AWS SQS

Hãy điểm qua nhanh định nghĩa policy của chúng ta:

  • “Version”: “2012-10-17” là phiên bản hiện tại của ngôn ngữ policy IAM.
  • Policy chứa một “Statement”, định nghĩa một tập hợp quyền.
  • “Sid”: “VisualEditor0” nghĩa là policy được tạo qua trình chỉnh sửa trực quan.
  • “Effect”: “Allow” nghĩa là các hành động này được cho phép.
  • “Action”: Danh sách này chỉ định các thao tác SQS được cho phép như trên.
  • “Resource”: “*” nghĩa là các hành động này được phép trên mọi tài nguyên SQS trong tài khoản.

Policy này cho phép toàn quyền tạo, xóa, gửi và nhận thông điệp từ bất kỳ hàng đợi SQS nào trong tài khoản. Mức quyền khá rộng, vì vậy bạn có thể muốn giới hạn theo ARN hàng đợi cụ thể để bảo mật tốt hơn trong môi trường sản xuất.

Nếu muốn tìm hiểu thêm về cấu hình IAM, hướng dẫn The Complete Guide to AWS Identity and Access Management (IAM) sẽ dạy bạn cách bảo vệ môi trường AWS, quản lý truy cập với người dùng, nhóm và vai trò, đồng thời áp dụng các thực tiễn tốt nhất để có bảo mật vững chắc.

Để đào sâu kiến thức cấu hình AWS, bài hướng dẫn How to Setup and Configure AWS: A Comprehensive Tutorial sẽ hữu ích để khám phá các thiết lập thiết yếu, thực tiễn bảo mật tốt nhất và cách tận dụng dịch vụ AWS cho phân tích dữ liệu và học máy.

Truy cập console Amazon SQS

Khi đã đáp ứng các yêu cầu, bước tiếp theo là truy cập console SQS để bắt đầu tạo và quản lý hàng đợi. Các bước truy cập console:

  • Trong thanh tìm kiếm phía trên, gõ "SQS" và chọn "Simple Queue Service" từ danh sách.
  • Bạn sẽ được chuyển tới bảng điều khiển SQS.

Accessing the Amazon SQS Console

Truy cập console Amazon SQS

Tạo và Quản lý Hàng đợi SQS

Khi đã truy cập console SQS, chúng ta có thể bắt đầu tạo và quản lý hàng đợi. Phần này sẽ hướng dẫn tạo cả hàng đợi tiêu chuẩn (standard) và FIFO.

Nhưng chính xác thì policy IAM của chúng ta có vai trò gì?

Policy IAM được tạo ở phần yêu cầu tiên quyết rất quan trọng cho việc tạo và quản lý hàng đợi. Cụ thể:

  • Gắn với người dùng hoặc vai trò: Policy phải được đính kèm với người dùng hoặc vai trò IAM bạn dùng để truy cập console SQS hoặc AWS CLI.
  • Kiểm tra quyền: Khi bạn cố tạo hàng đợi (hoặc thực hiện thao tác SQS khác), AWS sẽ kiểm tra policy này để đảm bảo bạn có đủ quyền.
  • Ủy quyền hành động: Quyền sqs:CreateQueue trong policy cho phép tạo hàng đợi. Nếu thiếu, bạn sẽ gặp lỗi "Access Denied" khi tạo hàng đợi.
  • Vận hành liên tục: Các quyền khác (sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage, sqs:DeleteQueue) cho phép bạn thực hiện nhiều thao tác trên hàng đợi sau khi tạo.

Với hiểu biết đó, hãy tiếp tục tạo hàng đợi, bắt đầu với hàng đợi standard.

Tạo hàng đợi standard

Hàng đợi standard là loại mặc định trong SQS. Cách tạo như sau:

  • Trên bảng điều khiển SQS, nhấp "Create queue".
  • Chọn "Standard" làm loại hàng đợi.
  • Nhập tên hàng đợi, trong ví dụ là “SQSHandsOn”.
  • Cấu hình: Visibility timeout, Message retention period, Maximum message size, và Delivery delay. Hãy để mặc định, rồi nhấp “Create queue”.

Creating a Standard Queue

Tạo hàng đợi standard

Khi tạo hàng đợi thành công sẽ có thông báo xác nhận như dưới đây, kèm thông tin chi tiết về hàng đợi.

Creating a Standard Queue

Tạo hàng đợi standard

Tạo hàng đợi FIFO

Hàng đợi FIFO dùng để đảm bảo thứ tự xử lý thông điệp. Các bước tạo như sau: 

  • Trên bảng điều khiển SQS, nhấp "Create queue".
  • Chọn "FIFO" làm loại hàng đợi.
  • Nhập tên hàng đợi (phải kết thúc bằng “.fifo”). Ví dụ: “SQSHandsOn.fifo”.
  • Tương tự như trên, giữ nguyên các thiết lập mặc định và chọn “Create queue”. 

Creating a FIFO Queue

Tạo hàng đợi FIFO

Tương tự hàng đợi standard, khi tạo FIFO thành công cũng cung cấp các chi tiết phục vụ việc gửi thông điệp.

Creating a FIFO Queue

Tạo hàng đợi FIFO

Khác biệt giữa hàng đợi standard và FIFO

Khi chọn giữa hàng đợi standard và FIFO trong Amazon SQS, điều quan trọng là hiểu rõ các đặc điểm và khả năng riêng của từng loại. 

Bảng sau cung cấp phân tích so sánh để giúp bạn quyết định loại hàng đợi phù hợp nhất với nhu cầu ứng dụng:

Differences between Standard and FIFO Queues

Khác biệt giữa hàng đợi standard và FIFO

Gửi và Nhận Thông điệp trong SQS

Khi các hàng đợi đã sẵn sàng, hãy bắt đầu gửi và nhận thông điệp. Phần này trình bày cách thực hiện qua AWS Management Console và AWS Command Line Interface (CLI).

Gửi thông điệp

Quy trình gửi thông điệp được minh họa với cả hàng đợi standard và FIFO.

Hàng đợi standard

Sử dụng AWS Management Console
  • Chọn hàng đợi từ bảng điều khiển SQS.
  • Nhấp "Send and receive messages".
  • Trong trường "Message body", nhập một thông điệp, ví dụ: “Hàng đợi này được tạo theo hướng dẫn Comprehensive Guide to Amazon Simple Queue Service (SQS).”
  • Nhấp "Send message".

Sending Messages Using AWS Management Console

Gửi thông điệp bằng AWS Management Console

Sau khi gửi, một cửa sổ bật lên xác nhận thông điệp đã được gửi. Nhấp “View details” để xem chi tiết thông điệp như dưới đây.

Sending Messages Using AWS Management Console

Gửi thông điệp bằng AWS Management Console

Cuối cùng, trong phần “Receive messages”, có thể thấy một thông điệp đang khả dụng.

Sending Messages Using AWS Management Console

Gửi thông điệp bằng AWS Management Console

Sử dụng AWS CLI SQS

Các bước chính để gửi thông điệp qua CLI theo mẫu dưới đây.

aws sqs send-message --queue-url [YOUR URL]--message-body "YOUR MESSAGE"

Với hàng đợi standard, URL của chúng ta có trong ảnh chụp màn hình ở trên. Với CLI, hãy dùng thông điệp khác:

  • URL: https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn
  • Thông điệp: “Message sent via AWS CLI”

Bước đầu để dùng CLI là cấu hình để nó có thể tương tác với tài nguyên AWS của chúng ta, yêu cầu các thông tin xác thực sau:

  • Access key ID
  • Secret access key
aws configure

Khi cấu hình xong, chạy lệnh sau với giá trị tham số chính xác:

aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn --message-body "Message sent via AWS CLI"

Sending Messages Using CLI

Gửi thông điệp bằng CLI

Đầu ra JSON từ lệnh tương ứng với chi tiết của thông điệp vừa gửi, và chúng ta thấy hiện có hai thông điệp trong hàng đợi SQSHandsOn.

Sending Messages Using CLI

Gửi thông điệp bằng CLI

Hàng đợi FIFO

Quy trình gửi thông điệp với FIFO khác đôi chút so với hàng đợi standard.

Để minh họa, hãy tưởng tượng bạn vận hành một nền tảng thương mại điện tử bán thiết bị điện tử. 

Hệ thống cần xử lý nhiều thao tác như xử lý đơn hàng, cập nhật tồn kho và quản lý thanh toán. Trong trường hợp này, ta có thể dùng hàng đợi SQS FIFO để đảm bảo các thao tác được xử lý đúng thứ tự và không bị trùng lặp.

  • Ví dụ CLI 1 (Đơn hàng khách): Thông điệp được gửi khi khách đặt đơn mới. Hệ thống xử lý đơn sẽ nhận và thực hiện theo đúng thứ tự tiếp nhận.
  • Ví dụ CLI 2 (Cập nhật tồn kho): Sau khi xử lý đơn, thông điệp này được gửi để cập nhật tồn kho, đảm bảo mức tồn chính xác khi sản phẩm được bán.
  • Ví dụ Console (Xử lý thanh toán): Thông điệp được tạo khi cần xử lý thanh toán cho đơn hàng, đảm bảo thanh toán theo đúng thứ tự và tránh tính phí hai lần.

Dùng hàng đợi FIFO cho các thao tác này đảm bảo rằng:

  • Đơn hàng được xử lý theo đúng thứ tự đặt.
  • Cập nhật tồn kho theo đúng trình tự, tránh bán quá số lượng.
  • Thanh toán được xử lý một lần và theo đúng thứ tự.

Khi gửi thông điệp tới hàng đợi SQS FIFO, lưu ý hai yếu tố chính:

  • Message group ID: Bắt buộc cho mọi thông điệp. Xác định nhóm trong đó thông điệp được xử lý theo thứ tự.
  • Message deduplication ID: Đảm bảo mỗi thông điệp chỉ được xử lý một lần trong cửa sổ 5 phút.

Với hiểu biết này, hãy tiếp tục với cách dùng CLI.

Sử dụng AWS CLI SQS

   Chúng ta có thể chạy các lệnh sau để gửi hai thông điệp đầu tiên vào hàng đợi FIFO.

  • Ví dụ CLI 1: Gửi đơn hàng khách:
aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn.fifo --message-body "Process customer order: #A1001" --message-group-id "CustomerOrders" --message-deduplication-id "Order-A1001-20240817-1"

Đầu ra cho lần thực thi đầu tiên như dưới đây.

Example 1 - Sending Messages Result Using CLI with FIFO

Ví dụ 1 - Kết quả gửi thông điệp bằng CLI với FIFO

  • Ví dụ CLI 2: Gửi cập nhật tồn kho:
aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn.fifo --message-body "Update inventory: ProductX -5 units"  --message-group-id "InventoryUpdates" --message-deduplication-id "Inventory-ProductX-20240817-1"

Đầu ra như dưới đây.

Example 2 - Sending Messages Result Using CLI with FIFO

Ví dụ 2 - Kết quả gửi thông điệp bằng CLI với FIFO

Đến hiện tại, đã có hai thông điệp được gửi vào hàng đợi FIFO, như hình dưới đây.

Sending Messages Result Using CLI with FIFO - Number of messages

Kết quả gửi thông điệp bằng CLI với hàng đợi FIFO - Số lượng thông điệp

Sử dụng AWS Management Console

Tương tự hàng đợi standard, chúng ta có thể gửi thông điệp từ console như sau:

  • Từ trang “Queues”, chọn “SQSHandsOn.fifo”.
  • Chọn thẻ “Send and receive message” để gửi thông điệp.
  • Yêu cầu nhập thêm “Message group ID” và “Message deduplication ID”.

Sending Messages Result Using Management Console with FIFO

Kết quả gửi thông điệp bằng console với hàng đợi FIFO

Bây giờ có thể thấy tổng số thông điệp trong hàng đợi FIFO là ba.

Sending Messages Result Using Management Console with FIFO - Total number of messages

Kết quả gửi thông điệp bằng console với FIFO - Tổng số thông điệp

Nhận và xóa thông điệp

Nhận và xóa thông điệp cũng quan trọng như gửi. Cách thực hiện như sau.

Hàng đợi standard

Sử dụng AWS Management Console
  • Chọn hàng đợi từ bảng điều khiển SQS.
  • Nhấp "Send and receive messages".
  • Nhấp "Poll for messages".
  • Thông điệp sẽ hiển thị trong phần "Messages".

Receiving Messages Using Management Console with Standard Queue

Nhận thông điệp bằng AWS Management Console với hàng đợi standard

Cả hai thông điệp trong hàng đợi standard được hiển thị ở trên.

Sử dụng AWS CLI SQS

Dưới đây là lệnh chung để nhận thông điệp từ hàng đợi standard.

aws sqs receive-message --queue-url [YOUR URL]

Với hàng đợi standard của chúng ta, lệnh đầy đủ là:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn

Hàng đợi FIFO

Quy trình truy xuất thông điệp qua console tương tự như hàng đợi standard.

Để nhận thông điệp từ hàng đợi FIFO bằng AWS CLI, bạn có thể dùng lệnh aws sqs receive-message. Cấu trúc cơ bản:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/022499002265/SQSHandsOn.fifo --attribute-names All --message-attribute-names All --max-number-of-messages 3
  • -attribute-names All: Truy xuất tất cả thuộc tính thông điệp mặc định.
  • -message-attribute-names All: Truy xuất tất cả thuộc tính thông điệp tùy chỉnh.
  • --max-number-of-messages 3: Chỉ định số lượng tối đa thông điệp cần nhận

Thực thi lệnh trên sẽ trả về cả ba thông điệp trong hàng đợi FIFO.

Receiving Messages Result Using CLI with FIFO

Kết quả nhận thông điệp bằng CLI với hàng đợi FIFO

Định giá AWS SQS

Hiểu mô hình định giá rất quan trọng để sử dụng SQS hiệu quả về chi phí. Phần này phân tích mức giá và gợi ý mẹo quản lý chi phí.

Nhìn chung, giá AWS SQS dựa trên số lượng yêu cầu API, truyền dữ liệu và các tính năng tùy chọn sử dụng.

Định giá yêu cầu

Các bảng sau cung cấp tổng quan về giá cho yêu cầu SQS:

 

Standard Queues 

(mỗi triệu yêu cầu)

FIFO Queues 

(mỗi triệu yêu cầu)

1 triệu yêu cầu đầu tiên/tháng

Miễn phí

Miễn phí

Từ 1 triệu đến 100 tỷ yêu cầu/tháng

$0.40

$0.5

Từ 100 tỷ đến 200 tỷ yêu cầu/tháng

$0.30

$0.40

Trên 200 tỷ yêu cầu/tháng

0.24

$0.35

Bảng giá từ trang SQS của AWS

Định giá truyền dữ liệu

Để hiểu giá truyền dữ liệu, tham khảo bảng sau:

Truyền dữ liệu VÀO

Giá

Tất cả dữ liệu truyền vào

$0.00 mỗi GB

Truyền dữ liệu RA

Giá

10 TB đầu tiên/tháng

$0.09 mỗi GB

40 TB tiếp theo/tháng

$0.085 mỗi GB

100 TB tiếp theo/tháng

$0.07 mỗi GB

Lớn hơn 150 TB/tháng

$0.05 mỗi GB

Bảng giá từ trang SQS của AWS

Mẹo quản lý chi phí

Một vài mẹo nhanh để quản lý chi phí SQS:

  • Dùng long polling để giảm số lần nhận rỗng.
  • Gửi và nhận theo lô (batch) khi có thể.
  • Giám sát mức sử dụng bằng AWS Cost Explorer.

Giám sát và Số liệu AWS SQS

Giám sát hiệu quả là chìa khóa để duy trì triển khai SQS ổn định. Phần này nêu các số liệu quan trọng và cách thiết lập cảnh báo.

Các số liệu chính của AWS SQS

Dưới đây là một số số liệu quan trọng cần theo dõi:

Key AWS SQS Metrics

Các số liệu chính của AWS SQS

ApproximateNumberOfMessagesVisible

Số liệu này biểu thị số lượng thông điệp sẵn sàng để truy xuất từ hàng đợi. Đây là chỉ báo về tồn đọng hàng đợi và hiệu quả xử lý. Số cao có thể cho thấy nút thắt trong xử lý.

ApproximateAgeOfOldestMessage

Số liệu này cho biết thời gian thông điệp cũ nhất chưa bị xóa đã ở trong hàng đợi. Nó giúp xác định vấn đề xử lý thông điệp như kẹt thông điệp hoặc consumer chậm. Với FIFO, số liệu này rất quan trọng vì có thể chỉ ra nhóm thông điệp bị chặn.

NumberOfMessagesSent

Theo dõi số lượng thông điệp được thêm vào hàng đợi. Hữu ích để giám sát tốc độ đầu vào và phát hiện đột biến bất thường trong việc tạo thông điệp. Lưu ý các thông điệp được gửi thủ công tới DLQ cũng được tính.

NumberOfMessagesReceived

Chỉ số này cho biết bao nhiêu thông điệp đã được trả về cho consumer từ hàng đợi. Hữu ích để theo dõi tốc độ đầu ra và có thể so sánh với NumberOfMessagesSent để đánh giá hiệu quả xử lý. Tương tự NumberOfMessagesSent, chỉ số này không bao gồm các thông điệp tự động chuyển sang DLQ do xử lý thất bại

Thiết lập cảnh báo CloudWatch

Quy trình tạo cảnh báo CloudWatch được minh họa cho bốn số liệu trên. Quy trình giống nhau cho tất cả, vì vậy chúng ta tập trung vào một số liệu và chỉ với SQS Standard (SQSHandsOn) để đơn giản. 

Các bước chính để thiết lập cảnh báo cho ApproximateNumberOfMessagesVisible như sau.

Cảnh báo CloudWatch có thể cảnh báo bạn về các vấn đề tiềm ẩn. Cách thiết lập từ console:

  • Tìm "CloudWatch" và chọn.
  • Trong điều hướng bên trái, nhấp "Alarms".
  • Nhấp nút "Create alarm".
  • Nhấp "Select metric".
  • Trong thẻ "All metrics", tìm và nhấp "SQS".
  • Nhấp "Queue Metrics". 
  • Tìm hàng đợi của bạn và chọn số liệu ApproximateNumberOfMessagesVisible và hàng đợi standard SQSHandsOn.

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

  • Từ trang trên, chọn "Graph metrics".
  • Chọn thống kê và đặt thành “Average”.
  • Đặt khoảng thời gian, trong ví dụ là 5 phút, rồi chọn “Select metric”.

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

  • Đặt tên cho metric (ví dụ “SQS-AvgHighMessageCount-SQSHandsOn”), và đặt “Threshold Type” thành “Static”.
  • Đặt điều kiện cho cảnh báo. Ở đây là “Greater”.
  • Đặt ngưỡng là “20” và chọn “Next”.

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

Cấu hình trên nghĩa là cảnh báo sẽ kích hoạt khi số trung bình thông điệp nhìn thấy trong hàng đợi SQSHandsOn vượt 20 trong ít nhất một điểm dữ liệu trong vòng 5 phút. Biểu đồ hiển thị số lượng hiện tại (đường màu xanh) so với ngưỡng (đường màu đỏ ở mức 20).

Thiết lập này giúp theo dõi xem hàng đợi có tích lũy quá nhiều thông điệp chưa xử lý hay không, điều có thể cho thấy chậm trễ xử lý hoặc vấn đề ở consumer. 

Consumer đề cập đến tất cả ứng dụng hoặc thành phần hệ thống của chúng ta truy xuất và xử lý thông điệp từ hàng đợi.

Nếu số trung bình vượt 20, bạn sẽ nhận cảnh báo, cho phép điều tra và có hành động phù hợp để ngăn tồn đọng hàng đợi.

  • Hành động “Next” phía trên dẫn đến “Configure actions”, chúng ta không cần thiết lập gì, giữ nguyên trang đó.
  • Chọn “Next” và nhập tên duy nhất cho cảnh báo, ví dụ "SQSHandsOn-HighMessageCount"
  • Tùy chọn thêm mô tả và chọn “Next”.
  • Xem lại cấu hình và nhấp "Create alarm".

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

  • Bạn sẽ thấy thông báo xác nhận màu xanh cho cảnh báo, cùng tên cảnh báo trong cột “Name”.

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

  • Sau khi chọn tên cảnh báo, thông tin chi tiết đầy đủ sẽ hiển thị như sau:

Setting Up CloudWatch Alarms

Thiết lập cảnh báo CloudWatch

Cảnh báo cho hàng đợi SQSHandsOn hiện ở trạng thái "Insufficient data". Nghĩa là CloudWatch chưa có đủ thông tin để xác định cảnh báo có kích hoạt hay không. 

Biểu đồ chưa có điểm dữ liệu, cho thấy hàng đợi còn mới. Cảnh báo sẽ kích hoạt khi số trung bình thông điệp vượt 20 trong 5 phút. 

CloudWatch sẽ thu thập dữ liệu và cập nhật trạng thái cảnh báo khi hàng đợi hoạt động và thông điệp được xử lý. 

AWS SNS so với SQS

Mặc dù SQS và SNS đều là dịch vụ nhắn tin, chúng phục vụ mục đích khác nhau. Phần này làm rõ khác biệt và trường hợp sử dụng của từng dịch vụ.

SNS versus SQS comparison table

Bảng so sánh SNS và SQS

Thực tiễn tốt nhất với AWS SQS

Tuân thủ các thực tiễn tốt giúp bạn tận dụng tối đa SQS. Dưới đây là một số gợi ý:

  • Dùng long polling để giảm chi phí và độ trễ.
  • Triển khai DLQ cho các thông điệp có vấn đề.
  • Sử dụng thao tác theo lô khi có thể.
  • Bảo mật hàng đợi bằng các policy truy cập phù hợp.
  • Giám sát độ sâu hàng đợi và điều chỉnh năng lực xử lý tương ứng.
  • Mã hóa khi truyền và khi lưu trữ cho dữ liệu nhạy cảm.

Kết luận

AWS SQS là công cụ mạnh mẽ để xây dựng ứng dụng đám mây có khả năng mở rộng và bền bỉ. Bằng cách tách rời các thành phần ứng dụng, bạn đạt được tính linh hoạt, chịu lỗi và khả năng mở rộng cao hơn. Với sự dễ dùng, bộ tính năng mạnh và tích hợp với các dịch vụ AWS khác, SQS là dịch vụ thiết yếu cho kiến trúc đám mây hiện đại.

Hãy theo dõi mức sử dụng, tối ưu triển khai và tuân thủ thực tiễn tốt nhất để tận dụng tối đa AWS SQS. Khi ứng dụng của bạn phát triển, SQS có thể thích ứng với nhu cầu thay đổi, trở thành tài sản giá trị trong bộ công cụ AWS của bạn.

Tiếp tục hành trình AWS của bạn bằng cách đăng ký khóa học AWS Cloud Technology and Services. Bước khởi đầu này sẽ giúp bạn thăng tiến sự nghiệp và sau đó lấy chứng chỉ AWS.

Câu hỏi thường gặp

Sự khác nhau giữa hàng đợi standard và hàng đợi FIFO trong SQS là gì?

Một hàng đợi standard cho phép thông lượng không giới hạn và đảm bảo gửi ít nhất một lần (at-least-once), nhưng không đảm bảo thứ tự thông điệp. Ngược lại, hàng đợi FIFO đảm bảo thông điệp được xử lý đúng theo thứ tự gửi và mỗi thông điệp chỉ được xử lý một lần.

Tôi có thể kiểm soát quyền truy cập vào hàng đợi SQS của mình như thế nào?

Bạn có thể kiểm soát truy cập vào hàng đợi SQS bằng IAM policies và policy tài nguyên SQS. IAM policies cho phép quản lý quyền cho người dùng và vai trò, trong khi policy SQS quản lý truy cập ở cấp độ hàng đợi, hạn chế truy cập theo tài khoản AWS hoặc hành động cụ thể.

Chi phí khi sử dụng AWS SQS là gì?

Chi phí AWS SQS dựa trên số lượng yêu cầu API và truyền dữ liệu. Một triệu yêu cầu đầu tiên mỗi tháng là miễn phí, và giá tăng dần theo số lượng yêu cầu và các tính năng bổ sung như hàng đợi FIFO và long polling.

Làm thế nào để cải thiện hiệu năng của hàng đợi SQS?

Để tối ưu hiệu năng, hãy dùng long polling để giảm lượt nhận rỗng, triển khai thao tác theo lô để gửi và nhận hàng loạt, và giám sát hàng đợi bằng CloudWatch để điều chỉnh năng lực xử lý khi cần.


Zoumana Keita 's photo
Author
Zoumana Keita
LinkedIn
Twitter

Nhà khoa học dữ liệu đa tài, yêu thích chia sẻ kiến thức và đóng góp cho cộng đồng, Zoumana là người sáng tạo nội dung trên YouTube và là cây bút công nghệ hàng đầu trên Medium. Anh yêu thích thuyết trình, lập trình và giảng dạy. Zoumana có hai bằng thạc sĩ: một về khoa học máy tính chuyên sâu Học máy tại Paris, Pháp, và một về Khoa học dữ liệu tại Texas Tech University, Hoa Kỳ. Anh bắt đầu sự nghiệp với vai trò Nhà phát triển phần mềm tại Groupe OPEN ở Pháp, sau đó chuyển sang IBM làm Tư vấn Học máy, nơi anh phát triển các giải pháp AI đầu-cuối cho các công ty bảo hiểm. Zoumana gia nhập Axionable, startup Trí tuệ nhân tạo Bền vững đầu tiên có trụ sở tại Paris và Montreal. Tại đây, anh làm Nhà khoa học dữ liệu và triển khai các sản phẩm AI, chủ yếu là các bài toán NLP, cho khách hàng tại Pháp, Montreal, Singapore và Thụy Sĩ. Ngoài ra, 5% thời gian của anh được dành cho Nghiên cứu và Phát triển. Hiện tại, anh làm việc với vai trò Nhà khoa học dữ liệu cao cấp tại IFC - Nhóm Ngân hàng Thế giới.

Chủ đề
AWS
Kỹ thuật Dữ liệu

Tìm hiểu thêm về AWS với các khóa học này!

Khóa học

Các khái niệm về AWS

2 giờ
53.4K
Khám phá thế giới của Amazon Web Services (AWS) và hiểu lý do tại sao nó luôn dẫn đầu trong lĩnh vực điện toán đám mây.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm