我正在使用这段代码从我在Azure Worker Role中运行的node.js文件中调用服务总线队列。
var azure = require('azure'),
config = require('./config');
var serviceBusClient = azure.createServiceBusService(config.sbConnection);
console.log("Start");
serviceBusClient.getQueue("myqueue", function (error, queue) {
if(error){
console.log(error);
}
console.log(queue);
});
console.log("End");
在此代码工作者角色中,只记录“start”和“end”但getQueue API不起作用且不会抛出任何错误,并且它在我的本地计算机上正常工作并记录响应。
答案 0 :(得分:0)
我使用您的node.js脚本代码在新的Cloud Service中进行了测试,并部署到Azure。我将.csdef
文件配置为将输出通过管道传输到日志文件中,例如:<ProgramEntryPoint commandLine="node.cmd .\worker.js > sblog.txt" setReadyOnProcessStart="true" />
以检查node.js脚本的输出。
一切都很顺利。您能否确认一下队列中是否有消息,以及您的.csdef
文件中是否有任何特定配置。
根据https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/的说明:
如果您在Azure Cloud Service(Web或辅助角色)中托管应用程序,并且这是您第一次部署应用程序,Azure将尝试使用与您安装的相同版本的Node.js您的开发环境是否与Azure上可用的默认版本匹配。
我们可以通过powershell命令检查云服务中的可用nodejs版本:Get-AzureServiceProjectRoleRuntime
。可用的版本列表为:0.6.17
,0.6.20
,0.8.4
,0.8.22
,0.8.26
和0.10.21
。
如果要使用自定义nodejs版本,可以将整个node.js执行应用程序文件夹打包到云服务应用程序中。并修改云服务应用程序中的node.cmd
文件,以指示node.js在云服务包中执行应用程序的路径。