我尝试实施AWS SQS队列以最小化来自后端服务器的数据库交互,但我遇到了问题。
为了测试功能,我为一个客户端实现了逻辑。它运行正常。但是,当我添加3个客户端时,它无法正常工作。我能够看到SQS队列中有500条消息,并且后端作业正在从队列中正常读取。
我是否需要增加后端作业的数量或增加客户端SQS队列的数量?现在所有客户端都将消息发送到同一队列。
如何计算所需的后端作业数量?另外,是否有任何设置可以使SQS更快地工作?
答案 0 :(得分:2)
将消息存储在队列中是好的 - 事实上,这是使用队列的目的。
如果您的后端系统无法以产生它们的速率使用消息,则该队列将充当缓冲区以保留消息,直到它们可以被处理。一个很好的例子是这个AWS re:Invent演示,其中显示的队列包含超过2亿条消息:Building Elastic, High-Performance Systems with Amazon SQS and Amazon SNS
如果快速处理邮件很重要,那么扩展您的消费者以匹配邮件生成率(或更快,以便您可以使用积压工作)。
您提到您的进程"从SQS队列中获取JSON消息,从队列中删除消息并对其进行处理"。请注意,最佳做法是从队列中接收消息,处理消息并然后将其删除(在完全处理后)。这样,如果您的进程失败,则在定义的不可见期后,该消息将自动重新出现在队列中。这使您的应用程序更能适应故障。