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

0

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

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

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

profile picture
EXPERTE
gefragt vor 5 Monaten52 Aufrufe
1 Antwort
0

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

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

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

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen