Если я правильно понимаю, настройка размера пакета на Lambda решает, сколько сообщений нужно принять за один цикл из SQS.Поэтому этот JSON (взят из теста Lambda SQS);
{
"Records": [
{
"messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
"receiptHandle": "MessageReceiptHandle",
"body": "FAIL",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1523232000000",
"SenderId": "123456789012",
"ApproximateFirstReceiveTimestamp": "1523232000001"
},
"messageAttributes": {
},
"md5OfBody": "7b270e59b47ff90a553787216d55d91d",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:eu-west-1:123456789012:MyQueue",
"awsRegion": "eu-west-1"
}
]
}
Есть массив Records.И если я установлю размер пакета на 5, то, если в SQS будет 5 сообщений, они будут включены в массив.Если имеется 10 сообщений, то Lambda будет вызываться дважды, по 5 сообщений в каждой записи.
Теперь я немного запутался в том, какой подход выбрать.Моя лямбда довольно проста.Это будет POST-запрос Axios к внешнему сервису.Если произойдет ошибка, я выдам ошибку.Я мог бы даже использовать axios-retry и сделать повторные попытки довольно легкими.
Должен ли я использовать пакет в моем случае?Наивно смотрю, все что мне нужно это 1 к 1. Другими словами, сообщение приходит.Лямбда берет это.Если произойдет ошибка, она будет автоматически повторена чуть позже.
Наоборот, мне придется перебирать все сообщения и пытаться выполнить запрос Axios.Что, если третье из пяти сообщений терпит неудачу, в этом случае я выбрасываю ошибку, и лямбда останавливается.Что происходит с сообщениями четвертым и пятым?Они повторно отправляются в SQS, а затем снова подобраны для другого исполнения?