失败的 SQS 消息是否有可见性超时?

Do failed SQS messages have a visibility timeout?

假设一个SQS消息被消费者消费,在可见性超时内,消费者报错。现在 SQS 将尝试重试消息,那么是在消息的当前可见性超时完成后完成,还是尽快完成?

当使用 ReceiveMessage() 从 Amazon SQS 队列检索消息时,消息将被标记为不可见。

当工作人员处理完消息后,它应该调用 DeleteMessage(),传递消息的 ReceiptHandle。

如果 SQS 队列在超时期限内没有收到 DeleteMessage() 请求,则消息将重新出现在队列中进行处理。

Amazon SQS 不知道“消费者给出错误”的时间。它所知道的是是否向 SQS 发出了 API 调用以删除消息,或者要求延长隐身期。 (如果 AWS Lambda 正在访问 SQS,情况会略有不同,但我假设您的情况并非如此。)

SQS 将在 当前可见性超时过后重试消息,这意味着如果消费 lambda 在错误发生前运行了 x 秒发生时,重试将在 currentVisbilityTimeout - x 秒后发生。