本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
发送、接收和删除 Amazon Simple Queue Service 消息
消息是可由分布式组件发送和接收的一段数据。始终使用 SQS 队列发送消息。
以下示例中使用的 sqsClient
变量可以通过以下代码段创建。
SqsClient sqsClient = SqsClient.create();
当您使用静态create()
方法创建SqsClient
时,SDK 会使用默认区域提供商链配置区域,使用默认凭证提供商链配置证书。
发送消息
通过调用 SqsClient 客户端sendMessage
方法向Amazon Simple Queue Service队列中添加一条消息。提供一个包含队列的 URL、消息正文和可选延迟值(以秒为单位)的SendMessageRequest
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
代码
sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build()); sqsClient.sendMessage(sendMsgRequest);
在一个请求中发送多条消息
通过使用 SqsClient sendMessageBatch
方法,在单个请求中发送多条消息。此方法采用SendMessageBatchRequest
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
代码
SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder() .queueUrl(queueUrl) .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(), SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build()) .build(); sqsClient.sendMessageBatch(sendMessageBatchRequest);
请查看上面的完整示例
检索消息
通过调用 SqsClient receiveMessage
方法,检索当前位于队列中的任何消息。此方法采用ReceiveMessageRequest
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
代码
try { ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build(); List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages(); return messages; } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null;
请查看上面的完整示例
收到后删除消息
收到消息并处理其内容后,通过向SqsClient's
deleteMessage
导入
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
代码
try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }
请查看上面的完整示例
更多信息
-
《Amazon Simple Queue Service Developer Guide》中的 How Amazon Simple Queue Service Queues Work
-
SendMessage在 Amazon Simple Queue Service API 参考中
-
SendMessageBatch在 Amazon Simple Queue Service API 参考中
-
ReceiveMessage在 Amazon Simple Queue Service API 参考中
-
DeleteMessage在 Amazon Simple Queue Service API 参考中