

 适用于 Java 的 Amazon SDK 1.x于2025年 end-of-support 12月31日达到。我们建议您迁移到 [Amazon SDK for Java 2.x](https://docs.amazonaws.cn/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 队列。提供包含队列 [URL](https://docs.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SendMessageRequest.html)、消息正文和可选延迟值（以秒为单位）的 [SendMessageRequest](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;
```

 **代码** 

```
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.amazonaws.cn/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SendMessageBatchRequest.html)，后者包含队列 URL 和要发送的消息列表（每条消息对应一个 [SendMessageBatchRequestEntry](https://docs.amazonaws.cn/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;
```

 **代码** 

```
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.amazonaws.cn/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;
```

 **代码** 

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

## 收到后删除消息
<a name="sqs-messages-delete"></a>

在收到消息并处理其内容后，可通过将消息的接收句柄和队列 URL 发送到 AmazonSQS 客户端的 `deleteMessage` 方法来从队列中删除消息。

 **代码** 

```
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 Developer Guide》中的 [How Amazon SQS Queues Work](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html)
+  《Amazon SQS API Reference》中的 [SendMessage](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)
+  《Amazon SQS API Reference》中的 [SendMessageBatch](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)
+  《Amazon SQS API Reference》中的 [ReceiveMessage](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)
+  《Amazon SQS API Reference》中的 [DeleteMessage](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)