我从Lambda收到以下错误,该错误是使用aws-sdk从SQS标准队列中提取和删除消息:
{
"errorType": "ReceiptHandleIsInvalid",
"errorMessage": "The receipt handle \"some-long-string\" is not valid for this queue.",
"code": "ReceiptHandleIsInvalid",
"stack": [
"ReceiptHandleIsInvalid: The receipt handle \"some-long-string\" is not valid for this queue.",
],
"message": "The receipt handle \"some-long-string\" is not valid for this queue.",
"time": "2019-07-25T23:01:38.402Z",
"requestId": "a1e5b6c2-4424-540c-9ce7-e376733674c8",
"statusCode": 404,
"retryable": false,
"retryDelay": 55.62516824566506
}
Lambda处理需要150-400ms,在Lambda末尾的deleteMessage操作上似乎失败。文档说这是由于收据句柄无效,但是什么使它无效呢?邮件不再在队列中了吗?
队列的MessageRetentionPeriod为14天,Lambdas的batchSize为1,reservedConcurrency也为1。
我怀疑此lambda会继续处理许多相同的消息,但无法删除它们。截至目前,有2616条消息可用,并且有14项正在进行中。我们应该在队列中最多看到50-100条消息。
有什么想法吗?可能是什么原因造成的?
编辑1:4小时后,可用消息的运行时间为2609和46。