多个消费者,但只有一条消息在传输中?

0

【以下的问题经过翻译处理】 我正在使用这个库 (https://github.com/BBC/sqs-consumer) 来使用我队列中的消息。我构建了一个在我的 EC2 实例上运行的小型节点应用程序(使用 pm2 我执行多个 npm 启动)。

我的预期结果是会有多条消息在传输(我有 2 个 EC2 实例,每个实例有 10 个进程)。

实际结果是,在 SQS 仪表板中,我一直看到 1 条消息正在运行。

profile picture
专家
已提问 6 个月前57 查看次数
1 回答
0

【以下的回答经过翻译处理】 您没有说明在发送消息时是否指定了MessageGroupId,因此我暂时假设您使用了单个组ID。

根据FIFO交付逻辑的文档ReceiveMessage调用将获取您请求的消息数量(默认值为1,最大值为10),然后在这些消息被删除或再次可见之前不会再接收来自同一组ID的任何其他消息。这是为了确保消息按照正确的顺序传递 - 这就是FIFO队列所提供的。

如果您使用多个组ID,则可以有多个消息正在传输,但这时顺序仅适用于组内而不是整个队列。然后,您可以有尽可能多的消息正在传输(假设每次只获取一个),这取决于您的唯一组ID数量。

如果顺序不重要,则非FIFO队列可能是更好的选择。

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则