Azure SDK for Node JS无法在Azure辅助工作者角色中工作

时间:2016-08-11 15:22:39

标签: node.js azure azure-worker-roles azure-sdk

我正在使用这段代码从我在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不起作用且不会抛出任何错误,并且它在我的本地计算机上正常工作并记录响应。

1 个答案:

答案 0 :(得分:0)

我使用您的node.js脚本代码在新的Cloud Service中进行了测试,并部署到Azure。我将.csdef文件配置为将输出通过管道传输到日志文件中,例如:<ProgramEntryPoint commandLine="node.cmd .\worker.js &gt; 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.170.6.200.8.40.8.220.8.260.10.21

如果要使用自定义nodejs版本,可以将整个node.js执行应用程序文件夹打包到云服务应用程序中。并修改云服务应用程序中的node.cmd文件,以指示node.js在云服务包中执行应用程序的路径。