Amazon web services 在SQS lambda环境中,建议采用何种扇出方式?
我希望通过SQS/消息传递队列体系结构向lambda环境中数据库中的用户发送推送通知,以便做到这一点Amazon web services 在SQS lambda环境中,建议采用何种扇出方式?,amazon-web-services,aws-lambda,architecture,amazon-sqs,serverless-framework,Amazon Web Services,Aws Lambda,Architecture,Amazon Sqs,Serverless Framework,我希望通过SQS/消息传递队列体系结构向lambda环境中数据库中的用户发送推送通知,以便做到这一点 我首先需要在启用推送通知的情况下查询数据库中的所有用户 把它们都绕过去 为每个用户发送SQS事件/消息 让我的sqs触发lambda处理/发送推送通知 有没有更好的方法来实现这一点,以避免查询大量用户和/或循环所有结果来为每个用户发送SQS消息?我在这里会采取稍微不同的方法,但类似 为用户查询数据库 在用户上循环 向SQS发送一条消息以获取要发送的一批记录,并使用SQS的SendMessageB
有没有更好的方法来实现这一点,以避免查询大量用户和/或循环所有结果来为每个用户发送SQS消息?我在这里会采取稍微不同的方法,但类似
SendMessageBatch
操作发送这些记录。所以一批批的。每一批消息都有几个“用户”要发送,而不仅仅是一个。这将提高性能,因为批处理需要更少的lambda调用李>
Promise.all
类型逻辑一次发送多条消息上下文对象告诉您还有多少时间。您可以定期检查,以确定是否应该退出lambda并将当前分页信息传递给step函数。step函数可以将分页信息传递回lambda,lambda应该编码为接受分页信息作为请求的一部分,如果提供了,则从该点继续李>
我建议您在应用程序体系结构中增加一部分,
我个人倾向于避免使用主数据库进行繁重的查询,
假设您的用户群很大。
我建议在搜索引擎(如ElasticSearch或CloudSearch)中维护您的用户列表,或在AWS DynamoDb中仅维护用户列表的简单表格,或创建数据库的读取副本。
为避免混淆,请使用搜索引擎(首选)或AWS DynamoDb
这将避免在查询read Speciality数据存储时对数据库造成压力,并且不会影响运行中的其他模块
用这种方式查询很快
第二步:将它们全部循环
步骤3:像Jason建议的那样,使用SendMessageBatch方法向SQS批量发送消息
步骤4:根据您的SQS设置,您可以在Lambda函数上处理多条消息FYI您可以批量发送和接收SQS消息。SQS触发的Lambda是否必须查找有关用户的信息才能知道将通知发送到何处,或者是否在步骤1中收集了所有信息?是否?您是否向所有用户发送完全相同的消息?这是一条短信,还是他们设备上的移动应用推送?您是将此消息发送给所有用户,还是基于某种逻辑仅发送一个子集?该组是否可能被重复使用,或者每个邮件的收件人列表是否不同?(请随意编辑您的问题以添加这些细节,而不是通过评论进行回答。)@JasonWadsworth在步骤1中收集了所有信息,SQS触发的lambda只需使用收到的信息调用PushNotification服务info@JohnRotenstein我没有使用SNS,我使用的是firebase云消息。这是对移动应用程序的推送通知。这是同样的信息是的,还有