VK Cloud Solutions logo

ReceiveMessage

Извлекает одно или несколько сообщений (до 10) из указанной очереди. Использование WaitTimeSeconds параметра включает поддержку длительного опроса. 

Короткий опрос - это поведение по умолчанию, при котором при ReceiveMessage вызове выбирается взвешенный случайный набор машин. Таким образом, возвращаются только сообщения на выбранных машинах. Если количество сообщений в очереди невелико (менее 1000), вы, скорее всего, получите меньше сообщений, чем запрашивали за ReceiveMessage звонок. Если количество сообщений в очереди очень мало, вы можете не получить никаких сообщений в конкретном ReceiveMessage ответе. Если это произойдет, повторите запрос.

Для каждого возвращенного сообщения ответ включает следующее:

  • Тело сообщения.

  • Дайджест сообщения.

  • MessageId Вы получили , когда вы отправили сообщение в очередь.

  • Дескриптор квитанции.

  • Атрибуты сообщения.

  • Дайджест MD5 атрибутов сообщения.

Дескриптор квитанции - это идентификатор, который вы должны указать при удалении сообщения. 

Вы можете указать VisibilityTimeout параметр в своем запросе. Параметр применяется к сообщениям, которые Amazon SQS возвращает в ответе. Если вы не включаете параметр, для возвращенных сообщений используется общий тайм-аут видимости очереди. 

Сообщение, которое не было удалено, или сообщение, видимость которого не была расширена до истечения тайм-аута видимости, считается неудачным получением. В зависимости от конфигурации очереди сообщение может быть отправлено в очередь недоставленных сообщений.

Параметры запроса

AttributeName.N

Список атрибутов, которые необходимо возвращать вместе с каждым сообщением. Эти атрибуты включают:

  • All - Возвращает все значения.

  • ApproximateFirstReceiveTimestamp - Возвращает время, когда сообщение было впервые получено из очереди ( время эпохи в миллисекундах).

  • ApproximateReceiveCount - Возвращает количество раз, когда сообщение было получено во всех очередях, но не удалено.

  • AWSTraceHeader - Возвращает строку заголовка трассировки AWS X-Ray.

  • SenderId

    • Например, для пользователя IAM возвращает идентификатор пользователя IAM ABCDEFGHI1JKLMNOPQ23R.

    • Например, для роли IAM возвращает идентификатор роли IAM ABCDE1F2GH3I4JK5LMNOP:i-a123b456.

  • SentTimestamp- Возвращает время, когда сообщение было отправлено в очередь ( время эпохи в миллисекундах).

  • MessageDeduplicationId- Возвращает значение, предоставленное производителем, который вызывает действие. SendMessage

  • MessageGroupId- Возвращает значение, предоставленное производителем, который вызывает действие. Сообщения с такими же сообщениями возвращаются последовательно. SendMessage MessageGroupId

  • SequenceNumber - Возвращает значение, предоставленное VK CS SQS.

Тип: массив строк

Допустимые значения: All | Policy | VisibilityTimeout | MaximumMessageSize | MessageRetentionPeriod | ApproximateNumberOfMessages | ApproximateNumberOfMessagesNotVisible | CreatedTimestamp | LastModifiedTimestamp | QueueArn | ApproximateNumberOfMessagesDelayed | DelaySeconds | ReceiveMessageWaitTimeSeconds | RedrivePolicy | FifoQueue | ContentBasedDeduplication | KmsMasterKeyId | KmsDataKeyReusePeriodSeconds | DeduplicationScope | FifoThroughputLimit

Обязательно: Нет

MaxNumberOfMessages

Максимальное количество возвращаемых сообщений. Amazon SQS никогда не возвращает больше сообщений, чем это значение (однако может быть возвращено меньше сообщений). Допустимые значения: от 1 до 10. По умолчанию: 1.

Тип: целое число

Обязательно: Нет

MessageAttributeName.N

Имя атрибута сообщения, где N - индекс.

  • Имя может содержать буквенно-цифровые символы, подчеркивание ( _), дефис ( -) и точку ( .).

  • Имя чувствительно к регистру и должно быть уникальным среди всех имен атрибутов сообщения.

  • Имя не должно начинаться с префиксов, зарезервированных AWS, таких как AWS.или Amazon.(или любых вариантов регистра).

  • Имя не должно начинаться или заканчиваться точкой ( .), и оно не должно иметь точек подряд ( ..).

  • Имя может содержать до 256 символов.

При использовании ReceiveMessageвы можете отправить список имен атрибутов для получения или вы можете вернуть все атрибуты, указав All или .* в своем запросе. Вы также можете использовать все атрибуты сообщения, например, начиная с префикса bar.*.

Тип: массив строк

Обязательно: Нет

QueueUrl

URL-адрес очереди VK CS SQS, из которой получены сообщения.

URL-адреса и имена очередей чувствительны к регистру.

Тип: Строка

Обязательно: Да

ReceiveRequestAttemptId

Этот параметр применяется только к очередям FIFO (first-in-first-out).

Токен, используемый для дедупликации ReceiveMessage звонков. Если проблема с сетью возникает после ReceiveMessage действия и вместо ответа вы получаете общую ошибку, можно повторить то же действие с идентичным ReceiveRequestAttemptId,чтобы получить тот же набор сообщений, даже если время ожидания их видимости еще не истекло.

  • Можно использовать ReceiveRequestAttemptId только в течение 5 минут после ReceiveMessage действия.

  • Когда вы устанавливаете FifoQueue, вызывающая сторона ReceiveMessageдействия может ReceiveRequestAttemptId явно предоставить .

  • Если вызывающий ReceiveMessageдействие не предоставляет ReceiveRequestAttemptId, Amazon SQS генерирует ReceiveRequestAttemptId.

  • Можно повторить ReceiveMessage действие с тем же самым ReceiveRequestAttemptId, если ни одно из сообщений не было изменено (удалено или изменилась их видимость).

  • Во время тайм-аута видимости последующие вызовы с тем же самым ReceiveRequestAttemptId возвращают те же сообщения и дескрипторы квитанций. Если повторная попытка происходит в пределах интервала дедупликации, она сбрасывает тайм-аут видимости. 

  • Хотя сообщения с определенным MessageGroupId объектом невидимы, сообщения, принадлежащие ему, больше MessageGroupId не возвращаются, пока не истечет время ожидания видимости. Вы все еще можете получать сообщения с другим MessageGroupId человеком, если он также виден.

  • Если вызывающий объект ReceiveMessage не может отследить ReceiveRequestAttemptId, попытки не работают, пока не истечет исходный тайм-аут видимости. В результате могут возникать задержки, но сообщения в очереди остаются в строгом порядке.

Максимальная длина ReceiveRequestAttemptId - 128 символов. ReceiveRequestAttemptId может содержать буквенно-цифровые символы ( a-z, A-Z, 0-9) и знаки препинания ( ). !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Тип: Строка

Обязательно: Нет

VisibilityTimeout

Продолжительность (в секундах), в течение которой полученные сообщения скрываются от последующих запросов на получение после получения по ReceiveMessageзапросу.

Тип: целое число

Обязательно: Нет

WaitTimeSeconds

Продолжительность (в секундах), в течение которой вызов ожидает поступления сообщения в очередь перед возвратом. Если сообщение доступно, вызов вернется раньше, чем WaitTimeSeconds. Если сообщений нет и время ожидания истекает, вызов успешно возвращается с пустым списком сообщений.

Тип: целое число

Обязательно: Нет

Элементы ответа

Служба возвращает следующий элемент.

Сообщение.N

Список сообщений.

Тип: Массив объектов сообщения

Ошибки

Для получения информации об ошибках, общих для всех действий, см. Общие ошибки .

OverLimit

Указанное действие нарушает лимит. Например, ReceiveMessage возвращает эту ошибку, если достигнуто максимальное количество сообщений в полете, и AddPermission возвращает эту ошибку, если достигнуто максимальное количество разрешений для очереди.

Код состояния HTTP: 403

Примеры

Следующий пример запроса запроса получает сообщения из указанной очереди. Структура AUTHPARAMSзависит от подписи запроса API. Для получения дополнительной информации см. Примеры запросов подписанной подписи версии 4 в Общем справочнике по Amazon Web Services .

Образец запроса

https://sqs.ru-east-2.mcs.mail.ru/123456789012/MyQueue/
?Action=ReceiveMessage
&MaxNumberOfMessages=5
&VisibilityTimeout=15
&AttributeName=All
&Expires=2020-04-18T22:52:43PST
&Version=2012-11-05
&AUTHPARAMS

Образец ответа

<ReceiveMessageResponse>
  <ReceiveMessageResult>
    <Message>
      <MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId>
      <ReceiptHandle>
        MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw
        Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE
        auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=
      </ReceiptHandle>
      <MD5OfBody>fafb00f5732ab283681e124bf8747ed1</MD5OfBody>
      <Body>This is a test message</Body>
      <Attribute>
        <Name>SenderId</Name>
        <Value>195004372649</Value>
      </Attribute>
      <Attribute>
        <Name>SentTimestamp</Name>
        <Value>1238099229000</Value>
      </Attribute>
      <Attribute>
        <Name>ApproximateReceiveCount</Name>
        <Value>5</Value>
      </Attribute>
      <Attribute>
        <Name>ApproximateFirstReceiveTimestamp</Name>
        <Value>1250700979248</Value>
      </Attribute>
    </Message>
  </ReceiveMessageResult>
  <ResponseMetadata>
    <RequestId>b6633655-283d-45b4-aee4-4e84e0ae6afa</RequestId>
  </ResponseMetadata>
</ReceiveMessageResponse>

В следующем примере включается длительный опрос путем вызова ReceiveMessage действия с WaitTimeSeconds параметром, равным 10 секундам.

Образец запроса

https://sqs.ru-east-2.mcs.mail.ru/123456789012/MyQueue/
?Action=ReceiveMessage
&WaitTimeSeconds=10
&MaxNumberOfMessages=5
&VisibilityTimeout=15
&AttributeName=All;
&Expires=2020-04-18T22:52:43PST
&Version=2012-11-05
&AUTHPARAMS