【问题标题】:long polling sqs queues长轮询 sqs 队列
【发布时间】:2018-06-03 14:17:09
【问题描述】:

我正在使用https://github.com/bbc/sqs-consumer/ SQS Consumer 插件来轮询 SQS 队列。

有时,即使消息被添加到队列中,消费者也不会收到来自队列的任何消息。

问题

  • 您建议我在 AWS SQS 队列上设置哪些设置,以确保消费者收到添加到队列中的每条消息?

  • Consumer在什么情况下不会收到加入Queue的消息?在我的情况下,消息被添加到队列中,但消费者没有收到它们。

【问题讨论】:

  • 为确保您在消息在队列中时不会收到空接收,WaitTimeInSeconds 必须 > 0 并且应该 为 20,除非你有特定的理由不这样做。你现在使用什么值?

标签: node.js amazon-sqs consumer


【解决方案1】:

感觉你对这里的一些术语感到困惑。

  • VisibilityTimeout 基本上是一个超时,表示该队列中的消息需要多长时间才能被消费者成功处理和删除。我们的生产环境中有数千个队列,具体取决于队列使用者所做的VisibilityTimeout 设置是否适当。我们预计一些消费者最多需要一分钟才能成功处理和删除消息。其他消费者的时间不应超过 5 秒。
  • ReceiveMessageWaitTimeSecondsWaitTimeSeconds 指的是同一件事。 ReceiveMessageWaitTimeSeconds 设置在队列级别,而WaitTimeSeconds 设置在ReceiveMessage 调用上。 WaitTimeSeconds 的优先级高于 ReceiveMessageWaitTimeSeconds。这两个选项都控制 AWS 在返回空响应之前等待的时间,我强烈建议将其保留为默认值;如果我没记错的话是 20 秒。

希望有帮助!

【讨论】:

  • 您是否知道在什么情况下消费者可能不会收到添加到队列中的消息?
猜你喜欢
  • 2022-01-13
  • 2011-02-10
  • 2018-12-30
  • 2014-12-08
  • 2015-09-27
  • 1970-01-01
  • 2021-08-09
  • 2019-04-26
  • 2014-02-01
相关资源
最近更新 更多