0

このコードを使用して、web マトリックスを使用してローカルで実行されている node.js サーバーからサービス バス キューを呼び出しています。Windows の Azure "Web サイト" にもアップロードしていますが、それでも動作が遅くなります。

var sb1 = azure.createServiceBusService(config.serviceBusNamespace, config.serviceBusAccessKey);
sbMessage = {
    "Entity": {
        "SerialNumbersToCreate": '0',
        "SerialNumberSize": config.usageRates[3],
        "BlobName": 'snvideos' + channel.ChannelTableName,
        "TableName": 'snvideos' + channel.ChannelTableName
    }
};

sb1.getQueue('serialnumbers', function(error, queue){
    if (error === null){
        sb1.sendQueueMessage('serialnumbers', JSON.stringify(sbMessage), function(error) {
            if (!error)
                res.send(req.query.callback + '({data: ' + JSON.stringify({ success: true, video: newVideo }) + '});');
            else 
                res.send(req.query.callback + '({data: ' + JSON.stringify({ success: false }) + '});');
        });
    }
    else res.send(req.query.callback + '({data: ' + JSON.stringify({ success: false }) + '});');
});

サーバーがクライアントに結果を返すまで、最大 5 秒かかる場合があります。sb1.getQueue('serialnumbers', function(error, queue){ をコメント アウトし、キュー メッセージを送信せずに返すと、1 秒未満で実行されます。なぜですか? Azure SDK を使用する私のアプローチはサービスバスは正しいですか?

どんな助けでも大歓迎です。

4

2 に答える 2

1

マークさん、返信ありがとうございます。私が経験していた問題は IISNode に関するものでした。誰かがプログラムで console.log を使用している場合、IISNode は最終的にある段階でクラッシュします。この設定を時々調整する場合は、web.config で次のようにします。

loggingEnabled="true"

false にするとクラッシュしなくなり、キュー呼び出しが機能します。すべてのキュー呼び出しが同じスレッド内で行われ、メッセージのキューを cron ジョブでチェックしていることを指摘する必要がありました。そのため、IISNode がクラッシュし、再起動すると、キューが何らかの形で遅延しているように見えました。

乾杯

于 2012-09-07T23:20:13.390 に答える
0

出力を使用していないため、このシナリオでは getQueue 呼び出しは実際にはあまり機能しません。パフォーマンスの違いがあるかどうかを確認するために、CreateQueueIfNotExists を試すことができます。

于 2012-09-07T21:35:42.840 に答える