Amazon web services 如果是AmazonSQS,请使用SQS queueName而不是URL

Amazon web services 如果是AmazonSQS,请使用SQS queueName而不是URL,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我有以下代码来接收来自SQS的消息: ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(); receiveMessageRequest.setQueueUrl(queueUrl); receiveMessageRequest.setMaxNumberOfMessages(sqsBatchSize);

我有以下代码来接收来自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服务)。它是唯一标识队列的值,因为帐户、区域和队列名称都嵌入其中

队列也可以由ARN识别,这也是有意义的,但有可能ARN在十多年前SQS首次推出时还没有被发明出来。SQS是有史以来第一个AWS服务,其中包含一个屏幕截图,这是无价的经典旧式亚马逊。屏幕顶部的活动选项卡很难阅读,但似乎显示“赚钱”