我有两个lambda实例同时运行,这两个实例将对相同的FIFO队列进行短轮询,间隔时间只有几秒钟。
第一个实例将收到前10个消息,第二个实例将收到0个消息,即使队列中总共有15个消息。
为什么第二个实例无法从队列中获取剩余的5条消息?这是预期的行为,我该如何克服它?
答案 0 :(得分:2)
您的15条消息(最有可能)都属于同一个消息组ID。因此,在成功处理和删除前10个之前,剩余的5个将无法供您的消费者使用。对于FIFO队列,这是保留消息顺序的预期行为(欢呼@ Michael-sqlbot指向正确的方向,并根据下面的评论使用此答案)。
对标准队列使用long polling。短轮询不检查每个SQS服务器,因此,它有可能无法获得所有结果。长轮询会检查所有SQS服务器,从而获得所有结果。