AWS Lambda-如何识别重复消息

时间:2018-07-04 23:00:10

标签: amazon-web-services aws-lambda mqtt amazon-sqs aws-iot

由于AWS Lambda的多个触发器只能保证“至少一次”发送消息(SQS和QoS = 1的IoT),我想知道识别重复消息并忽略它的最佳方法是什么。

我可以看到我当前收到了几条重复的消息,两次触发了我的lambda,从而导致噪音和无效数据。

在我的客户端中,我仅通过存储已处理的消息ID列表来解决该问题,但是在Lambda中,我无处可存储状态。

当然,我可以维护一个包含已处理消息ID的数据库表,但对我来说似乎有点过头了(并且可能会给lambda增加额外的计费运行时间)。在内存中进行简单的键/值存储服务就足够了。

你们还在使用什么其他解决方案?

1 个答案:

答案 0 :(得分:2)

我知道您不想使用数据库,但dynamodb可以很好地用于这种情况。如果您有什么可以用作良好的分区键的话,它将仍然表现出色。它仍然会为您的lambda运行时间增加非常少的时间,当然,您将需要为dynamodb容量和数据付费。我成功使用它来丢弃重复的消息。

可能值得研究的另一件事是具有内存缓存和Redis版本的Elasticache。如果性能特别受关注,这样做会更快一些,但不会像DynamoDB那样持久。