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/b1g8ad42m6he********/dj6000000000********/sample-queue
&ReceiptHandle=EAEggPjXhogtKAA
Подробнее о формировании запросов см. в разделе Общий вид запросов к API.
Пример ответа
<DeleteMessageResponse>
<ResponseMetadata>
<RequestId>c79cd3cb-ffb474f7-9d5a8a3e-e5db06c-7c4ef5d027dd4219c28bf6c2********</RequestId>
</ResponseMetadata>
</DeleteMessageResponse>