我想通过lambda处理程序中的SQS处理来自SNS的消息。
我必须检查消息是否重复,因为SNS、SQS不是FIFO。
现在我想用generandDB管理messageId使用ConsistentRead函数。如果我可以从dynamoDB中ConsistentRead,那么我将忽略该消息。
这种忽略信息的方式合理吗?如果你知道另一种方法,请教我。
如果我可以忽略重复的消息,如何测试?
感谢您的阅读!
只需使用SNS FIFO主题和SQS FIFO队列进行消息排序和重复数据消除。
如何测试消息重复项取决于如何定义重复项。在大多数情况下,整个消息正文必须完全匹配才能被视为重复。在这种情况下,您可以计算消息体的md5
或sha1
散列,以存储在DynamoDB表中。
您还可以设置一个时间窗口,将两条消息视为重复消息。例如,只有在过去1小时或1天内提交了同一封邮件时,该邮件才是重复邮件。在这种情况下,您可以将TTL添加到DynamoDB中,以自动删除比TTL旧的消息。