我有2个FIFO SQS队列,它接收要索引到elasticsearch的JSON消息。一个队列不断向数据库添加增量更改并将其添加到队列中。第二个队列用于数据库重新索引,即整个50Tb,如果数据要每隔几个月编入索引(其中所有内容都被添加到队列中)。我有一个lambda函数,它使用来自队列的消息并将它们放入适当的队列(活动索引或正在重建的索引)。
我应该如何触发lambda函数以最好地处理SQS中的积压消息,以便尽快处理这两个队列?
我的约束是需要按顺序处理队列项。如果lambda函数可以在没有5分钟限制的情况下无限期运行,我可以继续运行一个不断处理消息的函数。
答案 0 :(得分:1)
执行此操作的标准方法是使用运行Cloudwatch Events的periodically。这使您可以定期从队列中提取数据。
因为您必须轮询SQS,这可能不会导致最快的消息处理。另外,如果你经常要处理消息,要小心 - Lambda最终会比处理消息的小EC2实例贵得多。
答案 1 :(得分:0)
您可以将邮件直接发送到SQS
,而不是将邮件发布到SNS
主题,并注册了2个订阅者。
在将消息存储在SQS
中的同时调用Lambda的好处。