首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从一个SQS触发器触发多个lambda函数

从一个SQS触发器触发多个lambda函数
EN

Stack Overflow用户
提问于 2020-06-12 17:00:42
回答 5查看 10.5K关注 0票数 7

我不确定是否正确理解AWS Lambda - SQS触发器。我可以将其配置为这样一种方式:一个SQS队列可以根据消息体或消息属性触发不同的lambda函数吗?

My用例:我有三个不同的lambda函数(processCricket、processFootball、processTennis),每个函数都执行一个唯一的函数。我只有一个队列(processGame)来接收消息。队列中的每条消息都有一个属性"type“,即"Cricket”、“足球”或“网球”。我可以根据消息上的“类型”调用不同的lambda函数吗?

选项1:配置SQS以根据类型触发不同的lambda函数(不确定是否可以这样做)

选项2:配置一个lambda函数,它可以检查类型,然后根据其类型调用其他lambda函数。

选项3:为每个lambda创建单独的队列。通过将消息添加到适当的队列来控制哪个lambda处理消息。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-06-12 17:12:00

选项1:配置SQS以根据类型触发不同的lambda函数

type被lambda消耗之前,您不可能知道它的情况。所以这次是不可能的。

选项2:配置一个lambda函数,它可以检查类型,然后根据其类型调用其他lambda函数

是的,这是第一个选择的“可能”方式。但它可能会花费“更多”取决于你的使用。当您在批处理模式下使用sqs时,您必须通过进行多个检查来调用多个lambda。

选项3:为每个lambda创建单独的队列。通过将消息添加到适当的队列来控制哪个lambda处理消息。

在我看来,这可能是最好的选择。您可以为每个队列配置不同的DLQ,根据业务规则设置不同的批处理大小,不需要额外的lambda来增加“复杂性”。

票数 9
EN

Stack Overflow用户

发布于 2020-06-12 17:19:09

您应该而不是将多个Lambda函数配置为单个SQS队列的触发器。这是因为SQS中的消息将传递给任何一个使用者,当该消息由该使用者处理时,它将不会对其他人可见。因此,您将无法决定哪种“类型”的消息属于哪个函数,因此选项1是无效的。

备选案文2和3都应正常工作。如果您不期望将许多消息传递到您的队列中,因此不必担心Lambda标度,我将选择选项2。还要注意,可以在一个批处理中将多条消息传递给Lambda触发器,因此您必须相应地实现您的逻辑。

如果您期望收到大量的消息,那么选项3将更适合。

票数 7
EN

Stack Overflow用户

发布于 2021-05-07 19:00:06

这里的最佳选择是根本不直接将消息发送到队列。您可以使用SNS或EventBridge作为消息的目的地。然后,您应该为每种类型的消息都有一个队列。然后,您可以将每个队列订阅到源(SNS或EventBridge),并且只接收对该队列有意义的消息。使用EventBridge,您可以对整个有效负载进行相当数量的筛选。对于SNS,您需要将类型添加到属性中,以便它可以用于筛选。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62349013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档