SQS使用sqs-consumer nodejs对消息进行队列并行处理

时间:2017-09-24 17:22:57

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

我尝试使用aws SQS以5个批量接收来自SQS的消息,并且想要制作5个不同的子进程,以便每个进程同时运行,当其中一个完成作业时,它将返回到父进程然后父进程进程可以从aws SQS调用另一个作业。同样,这将使服务器上当前正在运行5个作业

编写的代码是:

const app = Consumer.create({
  queueUrl: 'QUEUE_URL',
  batchSize: 5,
  region:"eu-west-1",
  visibilityTimeout : 300,
  handleMessage: (message, done) => {

    for(var i in data.Messages)
    {
       console.log(JSON.parse(data.Messages[i].Body));
       done();       
    }
  },
  sqs: new AWS.SQS()

});

app.on('error', (err) => {
  console.log(err.message);
});

app.start();

在handleMessage()函数中,如何创建每个消息的多个子进程,然后在一个子进程完成执行时向一个父进程报告,以便父进程可以从aws SQS调用其他消息?

谢谢你们

1 个答案:

答案 0 :(得分:1)

以下是我如何以可扩展的方式解决它,

Create a lambda to process each message.
Read Message from SQS and Call Lambda with Lambda API

从另一个Lambda /外部进程调用Lamba:

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property

希望它有所帮助。