在 AmazonSQS 的情况下使用 SQS queueName 而不是 URL

Use SQS queueName instead of URL in case of AmazonSQS

我有以下代码来接收来自 SQS 的消息:

        ReceiveMessageRequest receiveMessageRequest = new
                ReceiveMessageRequest();
        receiveMessageRequest.setQueueUrl(queueUrl);
        receiveMessageRequest.setMaxNumberOfMessages(sqsBatchSize);

            ReceiveMessageResult messageResult = sqsClient.receiveMessage(receiveMessageRequest);

有什么方法可以传递 queueName 而不是传递 ReceiveMessageRequest 对象中的 queueURL 吗?

奇怪的是,没有。

嗯,实际上 并不奇怪。队列名称仅在每个 AWS 账户中的区域级别是唯一的(在一个账户或多个账户中不是全局唯一的)并且另一个账户可能会授予您访问其队列的权限,因此队列名称本身是不够的信息以确定您打算访问哪个队列。还需要账号和地区。 (在 SQS 的早期,地区本来不是考虑因素,因为只有一个地区。)

据推测,由于这个原因,请求中包含了 SQS 查询 API(SDK 使用的 Web 服务)requires the Queue URL。它是唯一标识队列的值,因为帐户、区域和队列名称都嵌入其中。

队列也可以由 ARN 识别,这也很有意义,但有可能在十多年前首次推出 SQS 时甚至还没有发明 ARN。 SQS 是 first-ever AWS 服务,this blog post about it, from 2006 包含一个无价的经典老派亚马逊屏幕截图。屏幕顶部的活动选项卡难以阅读,但它似乎在说 "Make Money."