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

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

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

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

我想知道是否以5-10秒的时间间隔(可能更less)使用短轮询是一个好主意? 这是否有可能会显着降低网站的性能? 有没有最佳做法呢?

       

网上收集的解决方案 "应该在Nodejs + Koa应用程序中使用AWS SQS消息轮询?"

尽pipe我会build议将报告function分离到不同的stream程(保持关注点分开)

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

无论SQS如何说单线程应用程序是真的,但对于构​​build在nodej上的应用程序,它不适用。 当您使用SQS的接收消息api进行长轮询时,服务器上发生等待并且客户端API是asynchronous的。

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

除非您的处理过程耗时,否则我认为整个处理过程不会受到负面影响。