2017-09-24 3 views
1

J'ai essayé d'utiliser aws SQS pour recevoir des messages de SQS dans un lot de 5, et je voulais faire 5 processus enfants différents afin que chacun s'exécute simultanément et quand l'un d'eux finit le Le travail retourne au processus parent, puis le processus parent peut appeler un autre travail à partir de aws SQS. De même, cela fera 5 emplois en cours d'exécution sur le serveurSQS file traitement parallèle des messages en utilisant sqs-consumer nodejs

Le code écrit est:

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(); 

Ici, dans la fonction handleMessage() comment plusieurs processus enfant pour chaque message peut être créé puis faire rapport à un processus parent lorsqu'un processus enfant a terminé l'exécution de sorte que le processus parent peut appeler un autre message à partir du SQS aws?

Merci les gars

+0

Quel est votre problème affrontez-vous ici? ou Vérifiez-vous si la preuve de concept fonctionne ou non? – Kannaiyan

+0

Je n'ai pas idée d'implémenter l'enfant et le parent dans la fonction handleMessage –

+0

Pourquoi vous limiter à 5 à la fois? – dashmug

Répondre

1

Voici comment je le résoudre d'une manière évolutive,

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

Invoke Lamba d'un autre Lambda/processus externe:

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

Hope it helps .

+0

J'ai utilisé essentiellement le serveur ec2 pour l'interrogation et je souhaite interroger 5 messages à la fois simultanément et un processus parent crée un processus enfant différent pour l'exécution parallèle –

+0

Vous pouvez également le faire avec un processus externe. Lambda est sans serveur, ec2 sera basé sur le serveur. – Kannaiyan