AWS SQS消息轮询是否应在Nodejs + Koa应用程序中使用?

时间:2016-06-02 08:44:36

标签: node.js amazon-web-services amazon-sqs

我创建了一个Nodejs + Koa应用程序,其中包含我的Koa网站和一个API,用于接收来自Koa网站上运行的Angular.js的请求。

我将使用AWS SQS服务从应用程序中推送消息。这些消息将由AWS Lambda函数处理。当Lambda函数完成工作时,它会将消息推送到另一个SQS队列。 Nodejs应用程序将轮询该消息的SQS队列,当有消息时,它将向用户发送状态报告。

我有红色的SQS文档,它说,不建议在单个线程应用程序中使用长轮询,因为它会阻塞线程。

我想知道以5-10秒的间隔(可能更少)使用短轮询是否是一个好主意?这是否有可能显着降低网站性能?对此有最佳实践吗?

1 个答案:

答案 0 :(得分:2)

虽然我建议将报告功能分离到不同的流程。(保持关注点分开)

我不认为,即使长时间的轮询也会对您的应用程序性能产生负面影响。

无论SQS对单线程应用程序的说法是否正确,但对于构​​建在nodejs上的应用程序,它不适用。当您使用SQS的接收消息api进行长轮询时,服务器上会发生等待,并且客户端API是异步的。

Nodejs利用eventloop机制,在检索消息期间,其他处理可以继续。只有在客户端收到消息时,才会调用回调并阻止您的进程。

除非您的处理非常耗时,否则我认为整体处理不会受到不利影响。