1

ファイルを Azure Storage Container に送信し、その後 Azure Queue にメッセージを送信するアプリケーションを実行しています。

約1000~1020メッセージに到達すると、それ以上ファイルやメッセージを送信できなくなります。キューにあるメッセージの数を確認しようとすると、エラーが発生することにも気付きました。

エラーは次のとおりです。

    { [Error: getaddrinfo EADDRINFO] code: 'EADDRINFO', errno: 'EADDRINFO', syscall: 'getaddrinfo' }

私のコードは次のとおりです。

function start(pos) {

var entry = inputs[pos]; // The array stars at 0 (zero)
console.log(entry); // Print current file

//Let's start the uploading
blobSvcInput.createContainerIfNotExists(containerInput, function(error, result, response){ // this function will create a container in Azure Storage (if this does not already exist)
        if(!error){
            // The Container was created or already exist
            blobSvcInput.createBlockBlobFromLocalFile(containerInput, "input"+pos, entry, function(error, result, response){ // this function will create a new Blob in Azure Storage (Uploading the entry)
                if(!error){
                    //No errors occurred - File uploaded

                    //Now we will send a message to the Azure Queue 
                    setTimeout(function(){ sendMsg(pos);  }, 0);                                            

                }else{          
                    //An error occurred when upload the file. We need to start again.                                                           
                    console.log("Error when uploading Blob.");
                    console.log(error);
                    console.log(result);
                    console.log(response);
                    setTimeout(function(){ start(pos);  }, 2500);

                }
                });
        }else{ 
            // An error occurred when was trying create a Container
            console.log("Error when creating Container.");

            console.log(error);
            console.log(result);
            console.log(response);


                // We need to try again                             
            setTimeout(function(){ start(pos);  }, 2500);

        }
        });
}

メッセージを送信する関数は次のとおりです。

function sendMsg (pos) {
//Here I'll format the content of my message
var msg = formatMessage(pos,1);


queueSvc.createQueueIfNotExists(queue, function(error, result, response){ // Create Queue, if it does not exist
    if(!error){ // Queue already exist or was created

    queueSvc.createMessage(queue, msg, function(error, result, response){ // Send the message

        if(!error){//Success sending the message

            totalMsgsSent++; // Just for control
            pos += parallelSend;
            if(pos <= inputs.length){
                setTimeout(function(){ start(pos);  }, 0);
            }
        }else{
            //Error occurred when sending the message
            console.log("Error occurred when sending the message")
            console.log(error);
            console.log(result);
            console.log(response);
            setTimeout(function(){ sendMsg(pos);  }, 2000);
        }
    });


    }else{
        //Occurred a error when creating the queue
        console.log("Occurred a error when creating the queue")
        console.log(error);
        console.log(result);
        console.log(response);
        setTimeout(function(){ sendMsg(pos);  }, 2000);
    }
});

}

私はここで本当に迷っています。ありがとうございました。

4

2 に答える 2

2

通常EADDRINFOは、IP アドレスが見つからない場合にホスト名の IP アドレスを検索するときに発生するエラー タイプです。あなたのコードに問題はありません。詳細ログを有効にして、問題を解決するリクエストを共有していただけますか? 詳細ログを有効にするには、次のように呼び出します。


    var storage = require('azure-storage');
    blobSvcInput.logger.level = storage.Logger.LogLevels.DEBUG;
    queueSvc.logger.level = storage.Logger.LogLevels.DEBUG;
    

于 2015-09-17T05:31:00.277 に答える
0

さらにいくつかのテストを試しました。ローカル マシンでテストしましたが、問題はありませんでした。

バージョンを確認したところ、クラウド vm はバージョン 0.10 で、ローカル 0.12 でした。

0.12のインストールを削除して強制しました。現在、正常に動作しています。ありがとうございます。

0.12からのv8エンジンではないかと思いました。

于 2015-09-17T17:24:11.313 に答える