当最大值为 43200 时,为什么 SQS 无法将 VisibilityTimeout 设置为 43199?

Why would SQS fail to set a VisibilityTimeout of 43199 when the max is stated as 43200?

最近需要在 SQS 消息上设置一些非常长的超时,发现记录的限制是 12 小时 (43200)。所以我尝试将超时设置为 1s 并得到了这个听起来很疯狂的错误(因为在大多数数字系统中 43199 实际上小于 43200)。

SQSError: SQSError: 400 Bad Request SenderInvalidParameterValueValue 43199 for parameter VisibilityTimeout is invalid. Reason: Total VisibilityTimeout for the message is beyond the limit [43200 seconds]

有人有什么想法吗?

编辑:看起来 'Total' 超时的概念与我使用 change_visibility API 调用设置的超时不同。总计从第一次收到消息时开始计算

如果您将值指定为 43199,我不确定为什么会出现错误,但我只是尝试在 AWS 控制台中创建一个默认可见性超时为 12 小时的队列。

编辑:

我试图通过设置可见性超时。 CLI 为 43199 秒,它也成功了 - 我认为这一定是一个临时问题,请重试。

aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/12345677/test --attributes VisibilityTimeout=43199

看起来您正在使用 ChangeMessageVisibility API 对当时已收到但不可见的消息设置消息可见性。

条消息的可见超时为 12 小时。这意味着当您收到消息时,此消息的可见性超时已经 运行。当您调用 ChangeMessageVisibility 时,您只能使用不会超过 12 小时且已过可见性超时的值来增加可见性超时。