删除消息时如何处理AWS SQS ReceiptHandleIsInvalid错误?

时间:2019-07-26 00:25:58

标签: amazon-web-services aws-sdk amazon-sqs

我从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。

0 个答案:

没有答案