从FIFO队列并发执行

0

【以下的问题经过翻译处理】 我的FIFO队列与Lambda函数连接。当消息发送到队列时,函数会接收并处理它。但是,当多个消息发送到队列时,我的问题就出现了:我理解FIFO队列基本上是一个一个处理所有消息(如果它们共享相同的GroupID)。但对我来说,当我在几秒钟内向队列发送多个消息(例如5个)时,第一个消息在启动时,其他消息都在等待,但是当第一个消息处理完成后,其他4个消息一起启动了!!如果它们共享相同的GroupID,而且是FIFO队列,这怎么会发生呢?我期望的是当第一个消息处理完成后,第二个消息才会启动,其他3个消息等待,以此类推!

我觉得这不取决于队列设置,因为我已经多次更改了所有参数(可见超时时间,基于内容的去重等)。无论如何,我现在会将参数设置的截图留给你们。

我的账户最多同时执行10个任务,这恰好是最多同时执行的消息数量(我试图发送很多消息,结果是第一个消息单独执行,然后十个或十个以下的所有其他任务会同时执行,对我来说非常奇怪)。我希望每个组只有一种任务在同时执行,其他任务必须等待正在处理的任务完成。我希望通过向队列中的消息给予不同的GroupID来管理并发处理。我是通过Node.js中的aws-sdk向队列发送消息的。可以有人帮我吗?

profile picture
EXPERTE
gefragt vor 5 Monaten6 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 我猜测您在Lambda事件源映射中将缓冲区大小设置为大于1。当您使用FIFO队列时,仍然可以通过相同的消费者一次从队列中读取多个消息。这个想法是,消费者知道按顺序处理这些消息。如果您不想要这样,只需将批处理大小设置为1即可。

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