Легко, если я установлю Batch Size
на 1, потому что если:
- Lambda возвращает true, SQS считает это успешным и удаляет сообщение из очереди
- Если Lambda сгенерирует или не сгенерируетвообще не возвращаюсь, SQS не удаляет сообщение
// example code
exports.handler = async (event) => {
event.Records.forEach(record => {
try {
const body = JSON.parse(record.body);
processMessage(body);
} catch(err) {
throw err;
}
});
// if execution made this
// far, everything is fine
return {};
};
function processMessage(record) {
// process single message
if (somethingWentWrong) throw new Error('heck');
}
Но как только я добавлю более 1 сообщения в пакет, что намного эффективнее,Я не могу просто выбросить, потому что все другие успешные сообщения будут обработаны, но не удалены из очереди.
Как решить эту проблему (кроме того, что размер пакета не будет равен 1)?