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

时间:2015-08-11 00:41:04

标签: amazon-web-services amazon-sqs

最近需要在SQS消息上设置一些非常长的超时,并且看到记录的限制是12小时(43200)。所以我尝试将超时设置为1秒,然后得到这个错误听起来很疯狂(在大多数数字系统中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调用设置的超时不同。总计从首次收到消息时开始计时

2 个答案:

答案 0 :(得分:9)

看起来您正在使用ChangeMessageVisibility API设置消息可见性,该消息已在当时收到并且不可见。

总计中的消息的可见性超时为12小时。这意味着当您收到消息时,此消息的可见性超时已在运行。当您致电ChangeMessageVisibility时,您可以仅使用不超过12小时且已经过了可见性超时的值来提高可见性超时。

答案 1 :(得分:1)

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

AWS Console

修改:

我尝试通过设置可见性超时。 CLI为43199秒并且也成功了 - 我认为它必须是临时问题,请再试一次。

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

CLI AWS SQS