Повторная обработка сообщений очереди сообщений AWS SQS - PullRequest
1 голос
/ 17 октября 2019

Я отправляю сообщения, которые потерпели неудачу в моей лямбде, в очередь недоставленных сообщений с помощью aws sdk. Я хочу подождать несколько часов, прежде чем отправить сообщение обратно в основную очередь для повторной обработки. У меня есть лямбда, прикрепленная к моей очереди мертвых писем. Я могу использовать задержку для отправки сообщений в очередь недоставленных сообщений. Но максимальная задержка составляет 15 минут. Но я хочу ждать больше времени. Кто-нибудь делал это раньше?

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Amazon SQS не предназначен для использования таким образом . Его основная цель - хранить сообщения и затем возвращать их при запросе.

Некоторые другие параметры:

  • Сохранять сообщения в базе данных, и приложение ищет соответствующие сообщения на основеполе отметки времени, или
  • Сделайте некоторые хитрые вещи с задержками в пошаговых функциях AWS (которые имеют функцию задержки)
0 голосов
/ 17 октября 2019

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

message = SQS.poll_messages
if message.perform_message_at > Time.now
   SQS.push_to_queue({perform_message_at : "Thursday November 
   2022"},delay:15 mins)
else
   process_message(message)
end
...