Sas*_*shi 5 amazon-sqs amazon-web-services aws-lambda
我不确定我是否理解 AWS Lambda - SQS 正确触发。我是否可以将它配置为一个 SQS 队列可以根据消息正文或消息属性触发不同的 lambda 函数?
我的用例:我有三个不同的 lambda 函数(processCricket、processFootball、processTennis),每个函数执行一个独特的功能。我有一个接收消息的队列(processGame)。队列中的每条消息都有一个属性“type”,它可以是“Cricket”、“Football”或“Tennis”。我可以根据消息上的“类型”调用不同的 lambda 函数吗?
选项 1:根据类型配置 SQS 以触发不同的 lambda 函数(不确定我是否可以这样做)
选项 2:配置一个可以检查类型的 lambda 函数,然后根据其类型调用其他 lambda 函数
选项 3:为每个 lambda 创建单独的队列。通过将消息添加到适当的队列来控制哪个 lambda 处理消息。
这里最好的选择是根本不将消息直接发送到队列。您可以使用 SNS 或 EventBridge 作为消息的目标。那么每种类型的消息都应该有一个队列。然后,您可以将每个队列订阅到源(SNS 或 EventBridge),并且仅接收对该队列有意义的消息。使用 EventBridge,您可以对整个有效负载进行大量过滤。对于 SNS,您需要将类型添加到属性中,以便将其用于过滤。
选项 1:根据类型配置 SQS 以触发不同的 lambda 函数
type
直到它被 lambda 消耗,你才能知道。所以这个是不可能的。
选项 2:配置一个可以检查类型的 lambda 函数,然后根据其类型调用其他 lambda 函数
是的,这是第一选择的“可能”方式。但根据您的使用情况,它可能会花费“更多”。当您以批处理模式使用 sqs 时,您必须通过多次检查来调用多个 lambda。
选项 3:为每个 lambda 创建单独的队列。通过将消息添加到适当的队列来控制哪个 lambda 处理消息。
在我看来,这可能是最好的选择。您可以为每个队列配置不同的 DLQ,根据您的业务规则设置不同的批次大小,不需要额外的 lambda 来增加“复杂性”。
归档时间: |
|
查看次数: |
3559 次 |
最近记录: |