2017-03-07 111 views
2

我想了解我是否需要SQS在我的工作流程中,如果有人能帮助解释。在我的应用中,当采取行动时,它将信息提交给SNS主题,该主题调用LAMBDA进行一些处理。这是工作伟大的,因为它是。SNS到Lambda和SNS到SQS到Lambda

当我在网上进行调查时,似乎人们在这个堆栈中使用SQS,以及SNS将SQS信息放到SQS上,然后SQS会调用LAMBDA。

我想我想了解的是在这方面需要SQS。添加或换句话说,通过直接从SNS调用我的LAMBDA,我失去了什么?

+0

SQS是一种便宜且简单的队列服务,目前它不具备触发功能。 – mootmoot

回答

6

在SNS和Lambda之间建立SQS的唯一好处是重新处理。 假设由于某种原因(例如超时或内存不足),Lambda无法处理某些事件,则可以将超时(最大5分钟)或内存(最大1.5GB)增加,然后重新启动轮询,您可以重新处理较旧的事件。 SQS -

这不会在SNS与λ,其中,如果LAMBDA出现故障时丢失

所以,如果您的活动是至关重要的,你不想错过他们,然后再为SNS的情况下,有可能 - Lambda

说到SQS无法触发像SNS那样的lambda。您将不得不频繁轮询SQS

2

SQS不调用Lambda。 SQS不能调用任何东西。与SQS一起使用Lambda的人员在事件计时器上运行Lambda,就像每分钟一次一样,每次函数运行时都会调查SQS以查看是否有要处理的消息。

如果您不需要排队并防止太多Lambda函数同时运行,那么您不需要SQS等队列系统。

+0

对不起。我想我要说的是,当连接的SNS主题收到任何信息时,LAMBDA会被自动调用。这一直很好。我想我想问的是这种方法会扩展吗?举例来说,有100个用户试图执行该操作,在这种情况下会有SQS帮助解决任何问题,或者我目前的方法是否正常工作? –

+2

这完全取决于您的Lambda函数在做什么。如果它插入到具有连接限制的关系数据库中,或者遇到具有速率限制的第三方API,那么您将遇到问题。如果它只是在S3中更新文件或其他东西,那么你可能不会遇到问题。您可能需要申请增加您的AWS账户中允许的并发Lambda函数,但这是关于它的。 –