ループしてメッセージをキュー(azureストレージキュー)に追加する小さなテストノードアプリを作成しました。次のようなものです。
var queueService = azure.createQueueService();
var queueName = 'taskqueue';
// other stuff like check if created
// loop called after queue is confirmed
for (i=0;i<1000;i++){
queueService.createMessage(queueName, "Hello world!", null, messageCreated);
}
// messageCreated does nothing at the moment, just logs to console
並列で実行されるワーカー関数の数を制御するために非同期を使用する100万の作成を処理するように書き直そうとしています。これは何よりも学習演習です。
https://github.com/caolan/async#queue
これはasyncのキューの基本的な設定であり、何を変更する必要があるのか途方に暮れています。以下はうまくいかないと思います:
var q = async.queue(function (task, callback) {
queueService.createMessage(queueName, task.msg, null, messageCreated);
callback();
}, 100);
// assign a callback. Called when all the queues have been processed
q.drain = function() {
console.log('all items have been processed');
}
// add some items to the queue
for(i=0;i<1000000;i++) {
q.push({msg: 'Hello World'}, function (err) {
console.log('finished processing foo');
});
console.log('pushing: ' + i);
}
私はそれを非同期でまとめる方法を完全には理解していません。