Azure SDK导致Node.js服务总线调用运行缓慢

时间:2012-08-23 02:32:17

标签: node.js azure sdk

我正在使用这段代码从我的node.js服务器调用服务总线队列,使用web矩阵在本地运行,我还上传到windows azure“网站”,但它仍然执行缓慢。

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',函数(错误,队列){并让它返回而不发送队列消息时它会在不到1秒的时间内执行。为什么会这样?我的方法是使用azure sdk服务总线是否正确?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

感谢回复。我遇到的问题是与IISNode有关,显然如果有人在他们的程序中使用console.log,那么IISNode最终会在某个阶段崩溃。在web.config中,如果你不时地调整这个设置:

loggingEnabled="true"

为false不再发生崩溃,并且队列调用有效。我应该指出我的所有队列调用都是在同一个线程中完成的,我有一个cron作业检查队列中的消息,因此当IISNode崩溃并再次重新启动时,似乎队列被某种方式延迟了。

干杯

答案 1 :(得分:0)

你的getQueue调用在这种情况下确实不是很有用,因为你没有使用输出,你可以尝试CreateQueueIfNotExists,看看是否存在性能差异