2017-09-24 13 views
1

aws SQSを使用してSQSからのメッセージを5バッチで受信しようとしましたが、5つの異なる子プロセスを作成してそれぞれが同時に実行し、ジョブは親プロセスに戻り、親プロセスはaws SQSから別のジョブを呼び出すことができます。同様に、これは作る5つのジョブは現在サーバー上で実行されているsqs-consumer nodejsを使用したSQSキュー並列処理

書かれたコードは次のとおりです。のhandleMessage()関数でここ

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

メッセージごとに複数の子プロセスが作成され、その後、戻って報告することができますすることができますか親プロセスがaws SQSからの他のメッセージを呼び出すことができるように、1つの子プロセスが実行を終了したときに、1つの親プロセスに?別のラムダ/外部プロセスからここ

+0

ここであなたの問題は何ですか?または、概念証明が有効かどうかを確認していますか? – Kannaiyan

+0

私はhandleMessagefunction内に子と親を実装することを考えていません –

+0

一度に5つに制限するのはなぜですか? – dashmug

答えて

1

私はスケーラブルな方法でそれを解決する方法です

みんなありがとう、

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

起動ラムダ:

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

はそれが役に立てば幸い。

+0

私は基本的にec2サーバーをポーリングに使用しており、同時に5つのメッセージを同時にポーリングしたいが、1つの親プロセスが並列実行のために異なる子プロセスを作成する。 –

+0

これも外部プロセスで行うことができる。ラムダはサーバレス、ec2はサーバベースです。 – Kannaiyan

関連する問題