AWS SQS 队列提高性能

AWS SQS queue improve performance

我尝试实施 AWS SQS 队列以最大限度地减少与后端服务器的数据库交互,但我遇到了问题。

为了测试功能,我为一个客户端实现了逻辑。 运行 很好。但是,当我再添加 3 个客户端时,它无法正常工作。我能够看到 SQS 队列卡住了 500 条消息,并且后端作业正在从队列中正常读取。

我是否需要增加后端作业的数量或增加客户端 SQS 队列的数量?现在所有客户端都将消息发送到同一个队列。

如何计算所需的后端作业数?还有,有什么设置可以让SQS工作得更快吗?

将消息存储在队列中很好 - 实际上,这就是使用队列的目的。

如果您的后端系统无法以生成消息的速度使用消息,队列将充当缓冲区以保留消息,直到它们可以被处理为止。一个很好的例子是这个 AWS re:Invent 演示文稿,其中显示了一个包含超过 2 亿条消息的队列:Building Elastic, High-Performance Systems with Amazon SQS and Amazon SNS

如果快速处理消息很重要,那么扩展您的消费者以匹配消息生成的速度(或更快,以便您可以消耗积压)。

您提到您的过程 "picks up the JSON message from the SQS queue, deletes the message from the queue and processes it"。请注意,最佳做法是从队列中接收一条消息,对其进行处理,然后然后将其删除(在完全处理之后)。这样,如果您的流程失败,消息将在定义的隐身期后自动重新出现在队列中。这使您的应用程序对故障更有弹性。