3

我正在使用这段代码从运行在 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");

在此代码工作者角色中,仅记录“开始”和“结束”,但 getQueue API 无法正常工作且不会引发任何错误,并且它在我的本地机器上工作正常并记录响应。

4

1 回答 1

0

我使用您的 node.js 脚本代码在新的云服务中进行了测试,并部署到 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 云服务(Web 或辅助角色)中托管应用程序,并且这是您第一次部署应用程序,Azure 将尝试使用与您在开发环境中安装的相同版本的 Node.js如果它与 Azure 上可用的默认版本之一匹配。

我们可以通过powershell命令查看云服务中可用的nodejs版本Get-AzureServiceProjectRoleRuntime:可用的版本列表是:0.6.17、、、、和。0.6.200.8.40.8.220.8.260.10.21

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

于 2016-08-12T09:16:34.003 回答