Повторное получение полученного сообщения SQS через лямбду - PullRequest
0 голосов
/ 12 марта 2019

Что работает: Используя AWS-SQS SDK для .Net, я могу получать пакет сообщений и удалять отдельные сообщения в окне таймера видимости сообщений.Я также не могу ничего сделать и эффективно запросить сообщение, которое затем перестанет быть буквально переписанным, если оно будет задано заданное число раз.

Что не работает: я пытаюсь сделать то же самое, используя лямбду.Я создал триггер, который работает, что означает, что SQS запускает лямбду, отправляя ей пакет сообщений.Эти сообщения, кажется, удаляются из очереди автоматически, когда это происходит.Я не контролирую удаление отдельного сообщения или его постановку в очередь.

При создании исключения в лямбде все сообщения в пакете остаются в очереди.Есть ли более элегантный способ сделать это, а также способ сделать это для отдельных сообщений вместо всего пакета?

1 Ответ

0 голосов
/ 12 марта 2019

Когда вы используете SQS Lambda Trigger , ваши сообщения будут автоматически удаляться из очереди в случае успешной обработки.

Если вы хотите, вы можете опрашивать сообщения из SQS вместоналичие сообщений запускает вашу лямбду.Для этого просто не настраивайте триггер для вашей лямбда-функции и выполняйте его каждые X раз с помощью Cloud Watch Event .После каждого выполнения вы затем опрашиваете свою очередь SQS на наличие новых сообщений.Я действительно не понимаю, зачем вы это делаете, поскольку очень удобно иметь триггер и автоматическое удаление сообщений.Если вы хотите отправить сообщения с ошибками в DLQ, просто установите DLQ в исходной очереди SQS.Затем вы можете настроить maxReceiveCount, и после достижения этого порога сообщения будут отправляться на настроенный DLQ.

Из документов:

Если сообщение не может быть обработано несколько разAmazon SQS может отправить его в очередь недоставленных сообщений.Настройте очередь недоставленных сообщений в исходной очереди, чтобы сохранить сообщения, которые не удалось обработать для устранения неполадок.Установите для параметра maxReceiveCount в политике перезапуска очереди значение не менее 5, чтобы избежать отправки сообщений в очередь недоставленных сообщений из-за регулирования.

...