我已经建立了一个FIFO队列,我想按消息组ID对消息进行分区。
作为事件触发器,我正在使用lambda函数。
现在我的问题是:是否可以为每个消息组只允许一个并发的lambda函数调用?
因此,如果我有Group A
和Group B
,并且每个消息组有20条消息,则每个消息组一次将一条消息(我已将批处理大小设置为1)传递给lambda函数,并且仅在上一个消息处理完成后才传递下一个。
是否可以使用FIFO队列和lambda,还是需要研究其他服务以允许这样做?
注意:我已经在研究带有单独分片的Kinesis,但是由于会有很多消息组,所以分片的总成本会太大。
谢谢!
答案 0 :(得分:1)
它应该以您想要的开箱即用的方式工作。
New for AWS Lambda – SQS FIFO as an event source:
在SQS FIFO队列中,使用多个MessageGroupId可使Lambda使用更大的并发限制来扩展并处理队列中的更多项目。 并发总数等于或小于SQS FIFO队列中唯一MessageGroupId的数量。
答案 1 :(得分:0)
有三个规则控制消息离开 FIFO 队列的顺序,以帮助理解处理行为: