我在AWS SQS中看到了一个名为可见性超时的选项,该选项为其他使用者设置了忽略正在处理的邮件的时间。 是否有选项可以在消息实际可供消费者使用之前设置时间,可以在消息实际插入队列时设置
答案 0 :(得分:2)
有这样的选项,但它是队列级选项,而不是消息级选项:
您可以使用
CreateQueue
操作通过将DelaySeconds
属性设置为0到900(15分钟)之间的任何值来创建延迟队列。您还可以使用SetQueueAttributes
操作将现有队列更改为延迟队列,以设置队列的DelaySeconds
属性http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html
当值非零时,所有消息都会在最初对任何消费者可见之前延迟指定的秒数。
答案 1 :(得分:0)
找到一个名为 Amazon SQS消息计时器的选项 Amazon SQS消息计时器允许您为添加到队列的消息指定初始不可见期。例如,如果发送DelaySeconds参数设置为45的消息,则消息在消息保留在队列中的前45秒内不可见。 DelaySeconds的默认值为0。
要设置适用于队列中所有消息的延迟时间段,请使用延迟队列。单个消息的消息计时器设置会覆盖适用于整个延迟队列的任何DelaySeconds值。
有关SQS的更多信息,请查看AWS的 this 详细PDF
答案 2 :(得分:0)
处理邮件时,实际上可以使用ChangeMessageVisibility()。这允许您在向上或向下保持消息的同时更改超时时间。例如,如果您知道您的消息第一次失败,您可以将其设置为0并将其重新放回队列。如果您想要一个特别长的超时,您可以检查该类型的消息并将其设置为10分钟,例如。