正在寻找一种方法,将发送到lambda的消息延迟5秒。
因此,lambda接收到消息1,然后在消息2之后5秒钟,然后是消息3之后5秒钟,依此类推,例如说一千条消息。
正在查看SQS延迟队列和消息计时器,但它们并不是我想要的。
使用等待功能来逐步运行,但是按照我需要的规模,这会很昂贵。
理想情况下,需要一个SQS队列来将消息限制为仅每5秒发送一次,有什么办法吗?
p.s。不必为SQS感到困惑,只需要一个解决方案
答案 0 :(得分:0)
您可以使用FIFO Queues。它支持消息排序和按队列延迟。了解以下警告很重要
现在,如果消息之间的延迟是恒定的,并且您不需要以大于3000 TPS的速率填充/耗尽队列,那么FIFO队列就可以工作。
答案 1 :(得分:0)
您可以使用get_queue_attributes()
并检索“ roximateNumberOfMessagesDelayed”。这实际上将告诉您队列中当前有多少条消息,您可以使用此消息将其与所需的延迟时间相乘。为此,您必须分别延迟每个消息,而不是整个队列。 (即DelayTime *近似NumberOfMessagesDelayed + DelayTime)