

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SQS 標準佇列
<a name="standard-queues"></a>

Amazon SQS 提供標準佇列做為預設佇列類型，支援諸如 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)、 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)和 等動作的每秒 API 呼叫數幾乎無限制[https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)。標準佇列可確保at-least-once訊息傳遞，但由於高度分散的架構，可能會傳遞多份訊息副本，而且訊息偶爾可能無法按順序送達。儘管如此，標準佇列會盡最大努力維持訊息傳送的順序。

當您使用 傳送訊息時`SendMessage`，Amazon SQS 會在確認訊息之前，以備援方式將訊息存放在多個可用區域 (AZs) 中。此備援可確保沒有任何單一電腦、網路或 AZ 失敗會使訊息無法存取。

您可以使用 Amazon SQS 主控台建立和設定佇列。如需詳細說明，請參閱 [使用 Amazon SQS 主控台建立標準佇列](creating-sqs-standard-queues.md#step-create-standard-queue)。如需 Java 特定的範例，請參閱 [Amazon SQS Java 開發套件範例](sqs-java-tutorials.md)。

**標準佇列的使用案例**

標準訊息佇列適用於各種案例，只要您的應用程式可以處理可能抵達超過一次或沒有順序的訊息。範例包括：
+ **從密集背景工作解耦即時使用者請求** – 使用者可以在系統調整大小或在背景對其進行編碼時上傳媒體。
+ **將任務配置到多個工作者節點** – 例如，處理大量的信用卡驗證請求。
+ **批次處理訊息以供未來處理** – 排程要在稍後新增至資料庫的多個項目。

如需標準佇列相關配額的資訊，請參閱 [Amazon SQS 標準佇列配額](quotas-queues.md)。

關於使用標準佇列的最佳實務，請參閱 [Amazon SQS 最佳實務](sqs-best-practices.md)。

# Amazon SQS at-least-once交付
<a name="standard-queues-at-least-once-delivery"></a>

Amazon SQS 會在多個伺服器上存放訊息的副本，以供備援使用並提供高可用性。偶爾在接收或刪除訊息時，存放訊息副本的其中一個伺服器可能會無法使用。

如果發生這種情況，訊息副本不會在無法使用的伺服器上刪除，而且您可能會在接收訊息時再次收到該訊息副本。請將您的應用程式設為*等冪* (若相同訊息處理一次以上應不會有不良影響)。

# Amazon SQS 佇列和訊息識別碼
<a name="sqs-queue-message-identifiers"></a>

本主題說明標準佇列和 FIFO 佇列的識別符。這些識別碼可以協助您尋找和操作特定的佇列和訊息。

## Amazon SQS 標準佇列的識別符
<a name="sqs-general-identifiers"></a>

如需下列識別碼的相關資訊，請參閱 *[Amazon Simple Queue Service API 參考](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/)*。

### 佇列名稱和 URL
<a name="queue-name-url"></a>

建立新的佇列時，必須指定在您 AWS 帳戶和區域中的唯一佇列名稱。Amazon SQS 會為您建立的佇列指派一個識別碼，稱為*佇列 URL*，內含佇列名稱及其他 Amazon SQS 元件。當您想要在佇列上執行動作時，即需提供佇列 URL。

以下為是 AWS 帳號為 `123456789012` 的使用者所擁有之 `MyQueue` 佇列的佇列 URL。

```
https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue
```

您可以列出佇列並剖析跟在帳戶號碼後面的字串，便可以程式設計方式來擷取佇列的 URL。如需詳細資訊，請參閱 `[ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)`。

### 訊息 ID
<a name="message-id"></a>

每則訊息會收到 Amazon SQS 在 `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)` 回應中傳回給您的系統指定*訊息 ID*。此識別碼可以用來辨識訊息。訊息 ID 的長度上限為 100 個字元。

### 接收控點
<a name="receipt-handle"></a>

每次從佇列接收訊息時，便會收到該訊息的*接收控點*。控點是與接收訊息的動作有所關聯，而非訊息本身。若要刪除訊息或變更訊息的可見性，請務必提供接收控點 (而非訊息 ID)。因此必須先接收訊息才能刪除訊息 (無法將訊息放進佇列然後再將之收回)。接收控點的長度上限為 1024 個字元。

**重要**  
若某則訊息收到一次以上，每次收到訊息時都會收到一個不同的接收控點。當您提出刪除訊息的請求時，必須提供最近接收的接收控點 (否則無法刪除訊息)。

以下是分成三行的接收控點範例。

```
MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw
Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE
auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=
```