DeleteMessage

Метод для удаления сообщения из очереди. Чтобы указать, какое сообщение следует удалить, используйте параметр ReceiptHandle. Сообщение можно удалить, даже если сообщение получено и обрабатывается другим получателем. Message Queue автоматически удаляет сообщения, если период, указанный в параметре RetentionPeriod закончился.

Параметр ReceiptHandle связан с конкретным экземпляром сообщения. Если сообщение получено несколько раз, оно будет получать разные значения ReceiptHandle. Чтобы удалить сообщения, следует использовать самое последнее значение ReceiptHandle, иначе запрос выполнится, но сообщение может быть не удалено.

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

Запрос

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

Параметр Тип Обязательный параметр Описание
QueueUrl string Да URL очереди, в которой находится сообщение.
ReceiptHandle string Да Параметр ReceiptHandle из запроса ReceiveMessage.

Ответ

Поля успешного ответа

Ответ не содержит полей.

Ошибки DeleteMessage

Перечень возможных ответов смотрите в разделе Стандартные ошибки.

Код HTTP Идентификатор ошибки Описание
400 InvalidIdFormat Некорректный формат ReceiptHandle.
400 ReceiptHandleIsInvalid Неверный параметр ReceiptHandle.

Пример запроса

Action=DeleteMessage
&Version=2012-11-05
&QueueUrl=https://message-queue.api.cloud.yandex.net/b1g8ad42m6he1ooql78r/dj600000000000le07ol/sample-queue
&ReceiptHandle=EAEggPjXhogtKAA

Подробнее о формировании запросов см. в разделе Общий вид запросов к API.

Пример ответа

<DeleteMessageResponse>
    <ResponseMetadata>
        <RequestId>c79cd3cb-ffb474f7-9d5a8a3e-e5db06c-7c4ef5d027dd4219c28bf6c263f88b93</RequestId>
    </ResponseMetadata>
</DeleteMessageResponse>