自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
发送、接收和删除 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 上的完整示例
更多信息
-
《Amazon SQS Developer Guide》中的 How Amazon SQS Queues Work
-
《Amazon SQS API Reference》中的 SendMessage
-
《Amazon SQS API Reference》中的 SendMessageBatch
-
《Amazon SQS API Reference》中的 ReceiveMessage
-
《Amazon SQS API Reference》中的 DeleteMessage