发送、接收和删除 Amazon SQS 消息 - AWS SDK for Java 1.x

自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support上线。我们建议您迁移到AWS SDK for Java 2.x以继续接收新功能、可用性改进和安全更新。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

发送、接收和删除 Amazon SQS 消息

本主题描述了如何发送、接收和删除 Amazon SQS 消息。始终使用 SQS 队列发送消息。

发送消息

通过调用 AmazonSQS 客户端的 sendMessage 方法,将单个消息添加到 Amazon SQS 队列。提供包含队列 URL、消息正文和可选延迟值(以秒为单位)的 SendMessageRequest 对象。

导入

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 上的完整示例

一次性发送多条消息

您可以在一个请求中发送多条消息。要发送多条消息,可使用 AmazonSQS 客户端的 sendMessageBatch 方法,此方法采用 SendMessageBatchRequest,后者包含队列 URL 和要发送的消息列表(每条消息对应一个 SendMessageBatchRequestEntry)。您也可以为每条消息设置一个可选延迟值。

导入

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 上的完整示例

接收消息

可通过调用 AmazonSQS 客户端的 receiveMessage 方法并为其传递队列的 URL,来检索当前位于队列中的任何消息。消息将作为一系列 Message 对象返回。

导入

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();

收到后删除消息

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

代码

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

请参阅 GitHub 上的完整示例

更多信息