Некоторые сообщения SQS никогда не доходят до Lambda, хотя я получил идентификатор сообщения от sendMessage - PullRequest
0 голосов
/ 06 апреля 2019

У меня странная проблема (возможно, это связано с тем, что я просто не понимаю некоторые тонкости SQS), когда я отправляю 62 сообщения в очередь, получаю действительные MessageId назад от AWS, но некоторые из этих сообщений(~ 5%) никогда не добирается до моей лямбды.

Мой код очереди выглядит так:

let data = await sqs.sendMessageBatch(params).promise();
console.log(`Queued ${data.Successful.length} records`);
if(data.Failed.length > 0){
   console.log(`ERROR not all messages were properly queued. `, data);
}
data.Successful.forEach(m => console.log(`MessageId=${m.MessageId}`));

В каждом случае каждое сообщение успешно, и этот код выводит MessageId.Обычный сценарий - отправка пакетов по 10 записей (максимально sendMessageBatch), и весь пакет пропадает.Итак, из 62 записей 10 отсутствуют или 2 отсутствуют.

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

У меня довольно обширная регистрация и поискчерез журналы я могу сказать, что ни один экземпляр Lambda никогда не получал эти пропущенные сообщения.Я могу сосчитать все остальные моменты, когда Lambda запускалась и обрабатывала запись, но это всегда 50 или 52 вместо 62 раз.

Куда идут мои сообщения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...