Amazon web services SQS重复数据消除ID和项目更新

Amazon web services SQS重复数据消除ID和项目更新,amazon-web-services,aws-lambda,amazon-rds,amazon-sqs,Amazon Web Services,Aws Lambda,Amazon Rds,Amazon Sqs,我有一个SQS队列,每次消息到达队列时都会触发lambda 消息包含关于产品的信息,我们称之为a。执行lambda时,它将产品a的数据插入RDS 然而,另一条消息将在大约30秒后到达,其中包含关于产品A的其他信息,这将再次将数据插入RDS 是否有任何方法可以在触发lambda的SQS上增加延迟? 此外,是否可以处理为产品A接收的新消息,而丢弃旧消息?我想使用SQS消息重复数据消除,以便将产品收到的每条消息作为唯一消息使用,但我不确定它是否适合此用例 另一个解决方案是用“自定义队列”替换SQS,通

我有一个SQS队列,每次消息到达队列时都会触发lambda

消息包含关于产品的信息,我们称之为a。执行lambda时,它将产品a的数据插入RDS

然而,另一条消息将在大约30秒后到达,其中包含关于产品A的其他信息,这将再次将数据插入RDS

是否有任何方法可以在触发lambda的SQS上增加延迟? 此外,是否可以处理为产品A接收的新消息,而丢弃旧消息?我想使用SQS消息重复数据消除,以便将产品收到的每条消息作为唯一消息使用,但我不确定它是否适合此用例

另一个解决方案是用“自定义队列”替换SQS,通过用RDS aurora实例替换SQS,lambda将在实例上执行cron并选择TTL过期的产品,以便插入DB中,但我发现这有点过分,有其他方法吗


谢谢

根据评论,问题的部分解决方案是在Lambda和SQS之间设置一个连接


在理想情况下,应在该情况下修改生产者。但是,由于无法修改生产者,因此可以实施缓存解决方案(例如ElastiCache),在将“不完整”的sqs消息写入RDS之前存储这些消息,并过滤掉重复的消息

您是否可以控制消息的生产者?您可以为每条消息指定延迟。p、 s.
SQS消息重复数据消除
仅适用于FIFO队列。是的,生产者是一个lambda函数,每次生产者在SQS中插入数据时都需要重置延迟,并且必须删除或丢弃旧消息。您能否解释为什么两次插入/更新对您不可行?我知道为了不进行两次数据库写入,您需要等待30秒,对吗?因为数据库接收到大量写入,这会影响写入的延迟。大多数写入都是无用的,因为产品A的信息将在短时间(1分钟)内多次放入SQS队列,这将触发lambda多次在数据库中重新插入数据,而不产生任何结果。我们的想法是等待一段时间,以便只将最新的数据放入数据库,这将减少写入次数。@Tar,如果用于sqs,则有
以秒为单位的最大批处理窗口。该参数设置“调用函数之前收集记录的最长时间(秒)”。也许这件事可以调查一下?