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

我们宣布了即将推出 end-of-support 的 Amazon SDK for Java (v1)。建议您迁移到 Amazon SDK for Java v2。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

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

使用 Amazon SQS 消息队列

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

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

创建队列

请使用 AmazonSQS 客户端的 createQueue 方法,并提供一个描述队列参数的 CreateQueueRequest 对象。

导入

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException; import com.amazonaws.services.sqs.model.CreateQueueRequest;

代码

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); CreateQueueRequest create_request = new CreateQueueRequest(QUEUE_NAME) .addAttributesEntry("DelaySeconds", "60") .addAttributesEntry("MessageRetentionPeriod", "86400"); try { sqs.createQueue(create_request); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }

您可以使用 createQueue 的简化形式,这只需要队列名称即可创建标准队列。

sqs.createQueue("MyQueue" + new Date().getTime());

请参阅 GitHub 上的完整示例

列出队列

要列出您的账户的 Amazon SQS 队列,可调用 AmazonSQS 客户端的 listQueues 方法。

导入

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ListQueuesResult;

代码

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); ListQueuesResult lq_result = sqs.listQueues(); System.out.println("Your SQS Queue URLs:"); for (String url : lq_result.getQueueUrls()) { System.out.println(url); }

使用 listQueues 重载 (不带任何参数) 将返回所有队列。您可以通过向其传递一个 ListQueuesRequest 对象来筛选返回的结果。

导入

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ListQueuesRequest;

代码

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); String name_prefix = "Queue"; lq_result = sqs.listQueues(new ListQueuesRequest(name_prefix)); System.out.println("Queue URLs with prefix: " + name_prefix); for (String url : lq_result.getQueueUrls()) { System.out.println(url); }

请参阅 GitHub 上的完整示例

获取队列的 URL

调用 AmazonSQS 客户端的 getQueueUrl 方法。

导入

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

代码

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); String queue_url = sqs.getQueueUrl(QUEUE_NAME).getQueueUrl();

请参阅 GitHub 上的完整示例

删除队列

向 AmazonSQS 客户端的 deleteQueue 方法提供队列的 URL

导入

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

代码

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.deleteQueue(queue_url);

请参阅 GitHub 上的完整示例

更多信息