Можно ли исключить сообщение из сервиса SQS AWS даже до его обработки? - PullRequest
0 голосов
/ 10 июня 2019

Я только начал пользоваться сервисом SQS AWS. Что ж, я знаю, что мы можем удалить процесс, используя ReceiptHandle, который мы получаем, когда получаем сообщение, но я хочу удалить сообщение, когда оно находится в очереди, или переместить его в очередь недоставленных сообщений. Возможно ли это потому, что в документации нет упоминаний об этом? Если да, можете ли вы дать мне подсказку или код или любую ссылку на него. Спасибо

Как будто существует этот метод, который использует ReceiptHandle для удаления сообщения.

for (Message m : messages) {
    sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Хотя вы не можете выборочно удалять сообщения, не читая их, вы можете удалить все сообщения в очереди за один раз, используя функцию очистки очереди.

Более подробная информация приведена в delete-all-messages-in-an-amazon-sqs-queue

И если вы хотите сделать это программно, то различные SDK также поддерживают это.

Здесь - пример того, как сделать это с помощью Python SDK

0 голосов
/ 10 июня 2019

Проведя дополнительные исследования, я нашел это в руководстве разработчика AWS SQS.

Каждый раз, когда вы получаете сообщение из очереди, вы получаете дескриптор квитанции для этого сообщения. Этот дескриптор связан с действием получения сообщения, а не с самим сообщением. Чтобы удалить сообщение или изменить видимость сообщения, вы должны предоставить дескриптор квитанции (не идентификатор сообщения). Таким образом, вы всегда должны получать сообщение, прежде чем сможете его удалить (вы не можете поместить сообщение в очередь и затем вызвать его). Максимальная длина дескриптора квитанции составляет 1024 символа.

...