发送、接收和删除 Amazon SQS 消息 - 适用于 Java 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

发送消息

通过调用 AmazonSQS 客户端的 sendMessage 方法,将单个消息添加到 Amazon SQS 队列。提供一个 SendMessageRequest 对象,该对象包含队列的 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。

一次性发送多条消息

您可以在一个请求中发送多条消息。要发送多条消息,请使用 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。

更多信息