我不确定我是否了解AWS Lambda-SQS触发器正确。我能否以一种SQS队列可以根据消息正文或消息属性触发不同的lambda函数的方式进行配置?
我的用例:我有三个不同的lambda函数(processCricket,processFootball,processTennis),每个函数都执行一个唯一的功能。我只有一个队列(processGame),可以接收消息。队列中的每个消息都有一个“类型”属性,该属性可以是“板球”,“足球”或“网球”。我可以根据消息的“类型”调用不同的lambda函数吗?
选项1:将SQS配置为根据类型触发不同的Lambda函数(不确定是否可以这样做)
选项2:配置一个可以检查类型的lambda函数,然后根据其类型调用其他lambda函数
选项3:为每个lambda创建单独的队列。通过将消息添加到适当的队列来控制哪个lambda处理消息。
选项1:配置SQS以根据类型触发不同的Lambda函数
您不知道type
,直到被lambda消耗掉为止。所以这不可能。
选项2:配置一个可以检查类型的lambda函数,然后根据其类型调用其他lambda函数
是,但是根据您的使用情况,可能会花费“更多”。当您以批处理方式使用sqs时,则必须通过进行多次检查来调用多个lambda。
选项3:为每个lambda创建单独的队列。通过将消息添加到适当的队列来控制哪个lambda处理消息。
我认为,这可能是最佳选择。您可以为每个队列配置不同的DLQ,根据您的业务规则设置不同的批处理大小,无需额外的lambda来增加“复杂性”。