当前位置:  开发笔记 > 数据库 > 正文

从AWS Lambda读取SQS队列

如何解决《从AWSLambda读取SQS队列》经验,为你挑选了1个好方法。

我有以下基础设施:

我有一个带有NodeJS + Express进程的EC2实例在端口上侦听消息(进程1).每次进程收到消息时,都会将其发送到SQS队列.然后我在同一台机器上有另一个进程使用长轮询读取队列(进程2).当它在队列中找到消息时,它会将数据插入位于RDS实例上的MariaDB数据库中.

(只是为了澄清,消息是由用户生成的,他们发送一大块数据,其中包含任意信息到进程1正在侦听的端点)

现在我想将读取SQS(进程2)的进程放在Lambda函数中,以便写入队列的进程和从队列中读取的进程完全独立.问题是我不知道这是否可行.

我知道Lambda函数是为响应事件而调用的,目前支持的事件是S3,SNS,SES,DynamoDB,Kinesis,Cognito,CloudWatch和Cloudformation,但不是SQS.

我正在考虑使用SNS通知来调用Lambda函数,以便每次将消息推送到队列时,都会触发SNS通知并调用Lambda函数,但在使用它后,我意识到这是不可能的从SQS创建SNS通知,只能将SNS通知写入队列.

现在我有点卡住,因为我不知道如何继续.由于AWS服务的当前限制,我觉得无法创建此基础结构.还有另一种方法可以做我想做的事情,还是我处于死胡同?

只是为了通过我所做的一些研究扩展我的问题,这个github repo展示了如何从Lambda函数读取SQS队列, lambda函数只有在从命令行触发时才有效:

https://github.com/robinjmurphy/sqs-to-lambda

在自述文件中,作者提到了以下内容:

更新:Lambda现在支持SNS通知作为事件源,这使得这个hack完全不需要SNS通知.如果您喜欢使用Lambda函数处理SQS队列上的作业,您可能仍会发现它很有用.

但我认为这不能解决我的问题,SNS通知可以调用Lambda函数,但是当我在SQS队列中收到消息时,我看不到如何创建通知.

谢谢



1> Naveen Vijay..:

有几种策略可用于连接点,(A)同步或运行 - 睡眠 - 运行以保持数据处理流在SNS,SQS,Lambda之间.

策略1:有一个lambda函数听SNS和实时处理它[请注意,SQS队列可以订阅SNS主题-这可能是记录/审计有益/重试处理]

策略2:鉴于您正在获取源自SQS队列的数据.您可以尝试使用2个Lambda函数[Feeder&Worker].

给料机将是scheduled lambda function他们的工作是把项目从SQS(如果有的话),并推动它作为一个SNS主题(和继续这样做永远)

工作者将被链接到听SNS主题,这将做的actual data processing

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有