Я установил очередь AWS SQS, которая запускает лямбда-функцию.В качестве поведения по умолчанию лямбда может быть запущена с 10 сообщениями одновременно (по умолчанию batchSize).
Если лямбда выходит из строя по какой-либо причине, то произойдет сбой всего пакета и, в конце концов, будет повторена попытка.Но, скажем, у меня есть лямбда, отправляющая электронную почту, она успешно выполняется для N первых случаев, но не работает в N + 1.Если он повторяет всю партию, он дублирует электронные письма.
В настоящее время я могу думать только о создании batchSize 1, чтобы избежать этой проблемы, но я надеялся избежать ее.Есть ли другой способ сделать это?
Код узла очень прост, что-то вроде этого:
exports.handler = async event => {
try {
await Promise.all(
event.Records.map(async record => {
// SEND EMAIL ASYNC
});
);
} catch (error) {
[...];
throw error;
}
}