amazon-web-services - 删除消息时如何处理 AWS SQS ReceiptHandleIsInvalid 错误?
问题描述
我从使用 aws-sdk 从 SQS 标准队列中提取和删除消息的 Lambda 收到以下错误:
{
"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-400 毫秒来处理,并且在 Lambda 结束时的 deleteMessage 操作似乎失败了。文档说这是由于收据句柄无效,但是是什么使它无效?消息是否不再在队列中?
队列的 MessageRetentionPeriod 为 14 天,Lambda 的 batchSize 为 1,reservedConcurrency 也为 1。
我怀疑这个 lambda 正在继续处理许多相同的消息并且未能删除它们。截至目前,有 2,616 条消息可用,14 条正在运行。我们应该在队列中看到最多 50-100 条消息。
有任何想法吗?这可能是什么原因造成的?
编辑 1:4 小时后,可用消息为 2,609 和 46 在飞行中。
解决方案
推荐阅读
- google-apps-script - 设置右轴变量的最大值
- python - 是否可以跳过 For 循环中的“执行语句”等待?
- java - 基于二维布尔数组的打印
- python - 在 python 中更新神经网络的输入层
- assembly - 组装标签:实际标签值是如何计算的?
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 0 的字节 0xfc:无效的起始字节
- c++ - 如何从 C++ 类中的排序调用比较器函数
- amazon-web-services - 无法连接到已部署的容器
- c - 我不明白为什么这段代码似乎在缓冲,而我正在使用无缓冲的 I/O
- scala - Scala:every.joinRight 的类型推断问题