使用 Amazon Simple Queue Service 消息队列 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Simple Queue Service 消息队列

消息队列 是用于在 Amazon Simple Queue Service 中可靠地发送消息的逻辑容器。有两种类型的队列:标准先进先出 (FIFO)。要了解有关队列以及这些类型之间的差异的更多信息,请参阅《Amazon Simple Queue Service Developer Guide》。

本主题介绍如何使用Amazon SDK for Java 来创建、列出、删除和获取 Amazon Simple Queue Service 队列的 URL。

以下示例中使用的 sqsClient 变量可以通过以下代码段创建。

SqsClient sqsClient = SqsClient.create();

当您使用静态create()方法创建SqsClient时,SDK 会使用默认区域提供商链配置区域,使用默认凭证提供商链配置证书

创建队列

使用SqsClient’screateQueue方法,并提供一个描述队列参数的CreateQueueRequest对象,如以下代码片段所示。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

代码

CreateQueueRequest createQueueRequest = CreateQueueRequest.builder() .queueName(queueName) .build(); sqsClient.createQueue(createQueueRequest);

请查看上面的完整示例 GitHub。

列出队列

要列出您账户的Amazon Simple Queue Service队列,请使用ListQueuesRequest对象调用SqsClient’slistQueues方法。

当您使用不带任何参数的listQueues方法形式时,该服务会返回所有队列,最多 1,000 个队列。

您可以为ListQueuesRequest对象提供队列名称前缀,将结果限制为与该前缀匹配的队列,如以下代码所示。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

代码

String prefix = "que"; try { ListQueuesRequest listQueuesRequest = ListQueuesRequest.builder().queueNamePrefix(prefix).build(); ListQueuesResponse listQueuesResponse = sqsClient.listQueues(listQueuesRequest); for (String url : listQueuesResponse.queueUrls()) { System.out.println(url); } } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); }

请查看上面的完整示例 GitHub。

获取队列的 URL

以下代码显示如何通过调用带有GetQueueUrlRequest对象的SqsClient’sgetQueueUrl方法来获取队列的 URL。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

代码

GetQueueUrlResponse getQueueUrlResponse = sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build()); String queueUrl = getQueueUrlResponse.queueUrl(); return queueUrl;

请查看上面的完整示例 GitHub。

删除队列

提供队列指向DeleteQueueRequest对象的 URL。然后调用该SqsClient’sdeleteQueue方法删除队列,如以下代码所示。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

代码

public static void deleteSQSQueue(SqsClient sqsClient, String queueName) { try { GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder() .queueName(queueName) .build(); String queueUrl = sqsClient.getQueueUrl(getQueueRequest).queueUrl(); DeleteQueueRequest deleteQueueRequest = DeleteQueueRequest.builder() .queueUrl(queueUrl) .build(); sqsClient.deleteQueue(deleteQueueRequest); } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

请查看上面的完整示例 GitHub。

更多信息

  • CreateQueue在 Amazon Simple Queue Service API 参考中

  • GetQueueUrl在 Amazon Simple Queue Service API 参考中

  • ListQueues在 Amazon Simple Queue Service API 参考中

  • DeleteQueue在 Amazon Simple Queue Service API 参考中