使用 Amazon Simple Queue Service 消息队列 - AWS SDK for Java 2.x

使用 Amazon Simple Queue Service 消息队列

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

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

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

SqsClient sqsClient = SqsClient.create();

使用静态 create() 方法创建 SqsClient 时,SDK 使用默认区域提供程序链配置区域,使用默认凭证提供程序链配置凭证。

创建队列

使用 SqsClient’s createQueue 方法,并提供一个描述队列参数的 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’s listQueues 方法。

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

您可以向 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’s getQueueUrl 方法来获取队列的 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’s deleteQueue 方法来删除队列,如以下代码所示。

导入

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

更多信息

  • 《Amazon Simple Queue Service API Reference》中的 CreateQueue

  • 《Amazon Simple Queue Service API Reference》中的 GetQueueUrl

  • 《Amazon Simple Queue Service API Reference》中的 ListQueues

  • 《Amazon Simple Queue Service API 参考》中的 DeleteQueue