

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)，以繼續接收新功能、可用性改善和安全性更新。

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

# 傳送、接收和刪除 Amazon SQS 訊息
<a name="examples-sqs-messages"></a>

本主題說明如何傳送、接收和刪除 Amazon SQS 訊息。訊息一律使用 [SQS 佇列](examples-sqs-message-queues.md)來傳送。

## 傳送訊息
<a name="sqs-message-send"></a>

呼叫 AmazonSQS 用戶端的 `sendMessage`方法，將單一訊息新增至 Amazon SQS 佇列。提供 [SendMessageRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SendMessageRequest.html) 物件，其中包含佇列的 [URL](examples-sqs-message-queues.md#sqs-get-queue-url)、訊息本文，以及選用的延遲值 (以秒為單位)。

 **匯入** 

```
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.SendMessageRequest;
```

 **Code** 

```
SendMessageRequest send_msg_request = new SendMessageRequest()
        .withQueueUrl(queueUrl)
        .withMessageBody("hello world")
        .withDelaySeconds(5);
sqs.sendMessage(send_msg_request);
```

請參閱 GitHub 上的[完整範例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java)。

### 一次傳送多個訊息
<a name="sqs-messages-send-multiple"></a>

您可以在單一請求中傳送多個訊息。若要傳送多則訊息，請使用 AmazonSQS 用戶端的 `sendMessageBatch`方法，該方法會採用 [SendMessageBatchRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SendMessageBatchRequest.html)，其中包含要傳送的佇列 URL 和訊息清單 （每個都包含一個 [SendMessageBatchRequestEntry](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SendMessageBatchRequestEntry.html))。您也可以為每個訊息設定選用的延遲值。

 **匯入** 

```
import com.amazonaws.services.sqs.model.SendMessageBatchRequest;
import com.amazonaws.services.sqs.model.SendMessageBatchRequestEntry;
```

 **Code** 

```
SendMessageBatchRequest send_batch_request = new SendMessageBatchRequest()
        .withQueueUrl(queueUrl)
        .withEntries(
                new SendMessageBatchRequestEntry(
                        "msg_1", "Hello from message 1"),
                new SendMessageBatchRequestEntry(
                        "msg_2", "Hello from message 2")
                        .withDelaySeconds(10));
sqs.sendMessageBatch(send_batch_request);
```

請參閱 GitHub 上的[完整範例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java)。

## 接收訊息
<a name="sqs-messages-receive"></a>

呼叫 AmazonSQS 用戶端的 `receiveMessage`方法，將佇列的 URL 傳遞給佇列，以擷取目前佇列中的任何訊息。訊息會以 [Message](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/Message.html) 物件清單的形式傳回。

 **匯入** 

```
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.AmazonSQSException;
import com.amazonaws.services.sqs.model.SendMessageBatchRequest;
```

 **Code** 

```
List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();
```

## 在收到訊息後刪除訊息
<a name="sqs-messages-delete"></a>

收到訊息並處理其內容後，將訊息的接收控點和佇列 URL 傳送至 AmazonSQS 用戶端的 `deleteMessage`方法，從佇列刪除訊息。

 **Code** 

```
for (Message m : messages) {
    sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}
```

請參閱 GitHub 上的[完整範例](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java)。

## 詳細資訊
<a name="more-info"></a>
+  《 [Amazon SQS 開發人員指南》中的佇列如何運作](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) Amazon SQS 
+  API Amazon SQS 參考中的 [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) 
+  API Amazon SQS 參考中的 [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html) 
+  Amazon SQS API 參考中的 [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 
+  Amazon SQS API 參考中的 [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html) 