在节点js中运行并行进程以处理SQS消息

时间:2016-05-17 15:00:22

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

sqs允许MaxNumberOfMessages = 10

("要返回的最大消息数.Amazon SQS永远不会返回比此值更多的消息,但可能会返回更少的消息。")

一次获取消息,那么我们可以运行多个并行进程 在nodejs中,它可以处理许多sqs消息。

任何可用的npm包吗?

2 个答案:

答案 0 :(得分:0)

Async可能不是正确的选项,因为并行操作实际上并不是并行运行。

https://github.com/caolan/async#paralleltasks-callback 并行(任务,[回调]) 并行运行任务函数集合,无需等到上一个函数完成。如果任何函数将错误传递给其回调,则会立即使用错误值调用主回调。任务完成后,结果将作为数组传递给最终回调。 注意:parallel是并行启动I / O任务,而不是关于代码的并行执行。如果您的任务不使用任何计时器或执行任何I / O,它们实际上将被串行执行。每个任务的任何同步设置部分将一个接一个地发生。 JavaScript仍然是单线程的。 也可以使用对象而不是数组。每个属性都将作为函数运行,结果将作为对象而不是数组传递给最终回调。这可以是处理并行结果的更易读的方式。

但你可以使用后台线程,工作线程并行运行这些任务,但不确定这是否能完全解决你的问题。

答案 1 :(得分:0)

您可以启动多个进程,但节点用于通过单个进程利用可用内核的最大值。创建更多流程不一定会使整体吞吐量更高。 如果您有多核机器,通常建议每个核心有一个进程。

用于SQS的AWS Javascript SDK异步工作,即当第一次获取I / O时,该过程将继续获取更多消息。 除非您通过等待使进程同步,否则进程将连续从SQS检索消息。