Используйте SQS queueName вместо URL в случае AmazonSQS - PullRequest
0 голосов
/ 08 мая 2019

У меня есть следующий код для получения сообщений из SQS:

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

            ReceiveMessageResult messageResult = sqsClient.receiveMessage(receiveMessageRequest);

Есть ли способ передать queueName вместо queueURL в объекте ReceiveMessageRequest?

1 Ответ

1 голос
/ 08 мая 2019

Как ни странно, нет.

Ну, на самом деле это не , что странно.Имена очередей уникальны только на уровне региона в каждой учетной записи AWS (не являются глобально уникальными в одной учетной записи или в нескольких учетных записях), и другая учетная запись может предоставить вам разрешение на доступ к своей очереди, поэтому само по себе имя очереди недостаточночтобы определить, к какой очереди вы хотите получить доступ.Номер счета и регион также необходимы.(В первые годы существования SQS регион изначально не рассматривался, поскольку существовал только один регион.)

Предположительно по этой причине SQS Query API (веб-служба, используемая SDK) требует, чтобы URL-адрес очереди был включен в запрос.Это значение, которое однозначно идентифицирует очередь, потому что в нее встроены учетная запись, регион и имя очереди.

Очередь может быть поочередно идентифицирована ARN, и это также имеет смысл, но возможночто ARN еще даже не были изобретены, когда SQS был впервые запущен более десяти лет назад.SQS был первым сервисом AWS, и этот пост в блоге об этом, с 2006 года содержит снимок экрана, который представляет собой бесценную классическую старую школу Amazon.Активную вкладку в верхней части экрана трудно прочитать, но, похоже, на ней написано «Заработай.»

...