我正在使用这段代码从我的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服务总线是否正确?
任何帮助都将不胜感激。
答案 0 :(得分:1)
感谢回复。我遇到的问题是与IISNode有关,显然如果有人在他们的程序中使用console.log,那么IISNode最终会在某个阶段崩溃。在web.config中,如果你不时地调整这个设置:
loggingEnabled="true"
为false不再发生崩溃,并且队列调用有效。我应该指出我的所有队列调用都是在同一个线程中完成的,我有一个cron作业检查队列中的消息,因此当IISNode崩溃并再次重新启动时,似乎队列被某种方式延迟了。
干杯
答案 1 :(得分:0)
你的getQueue调用在这种情况下确实不是很有用,因为你没有使用输出,你可以尝试CreateQueueIfNotExists,看看是否存在性能差异