我有多个来源将原始数据推送到S3。我已经在我的S3存储桶上配置了SQS事件通知。 问题是滞后和局限性。 我预计在不久的将来将会有更多的来源,并且由于我们只能从SQS的一次民意测验中获得10条消息,因此我认为在不久的将来会有更多的来源将数据推送到S3时,SQS将成为充满了几千条消息,我将无法更快地处理它们。 我正在考虑将sqs散开,例如将消息从我的主SQS队列传播到更多SQS队列,以便我的处理层可以轮询多个队列,例如:5个队列并处理更多消息。 可能的方法应该是什么。
答案 0 :(得分:3)
将消息扇出到多个sqs队列的典型方法是使用SNS。
s3事件通知将转到SNS而不是SQS,并且SNS将负责将这些消息散发到所需的尽可能多的队列中。
也就是说,我不确定我是否理解为什么您认为如果使用多个消息队列,您将能够更快地处理消息。
由多个处理客户端或单个客户端使用多线程轮询单个队列SQS队列可能是比简单引入更多队列更好的提高处理速度的方法。
答案 1 :(得分:0)
“ ...,因为我们一次只能从SQS中获取10条消息...我正在考虑散布sqs,例如将消息从我的主SQS队列传播到更多SQS队列,以便我的处理层可以轮询多个队列,例如:5个队列并处理更多消息。“
简短回答:请勿这样做。
这是原因:
是的,一次民意调查最多可以检索10条消息。但是,您可以多个线程和多个主机都轮询一个队列。使您的使用者并行运行是这里的关键,因为处理队列条目将成为您的瓶颈-不能从队列中检索条目。一个SQS队列可以处理大量轮询线程。
您建议的多队列扇出有很多缺点: