Azure serviceBusService的未处理异常

时间:2014-08-15 21:32:46

标签: azure azure-mobile-services azure-servicebus-queues

我正在尝试从我的Azure移动服务中的API函数发送serviceBusQueue消息,即使它成功创建了queueService并且队列存在,我也会遇到令人讨厌的异常。我是怎么解决这个问题的?

我附上了发送代码和堆栈跟踪。

function sendBusMessage(request, params, message, success)
{
  console.log(params);
  var queueService = azure.createServiceBusService(params.namespace,params.key);
  console.log(queueService);
  if (queueService)
  {
    queueService.sendQueueMessage('worker', message, function (error) 
    {
        if (!error) 
        {
            success();
        }
        else 
        {
            request.respond(statusCodes.INTERNAL_SERVER_ERROR,error);
        }
    });
  }
}

异常堆栈:

发生未处理的异常。 TypeError:无法将属性'body'设置为null     在ServiceClient._performRequest.self._buildRequestOptions.operation(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ serviceclient.js:210:34)     在ServiceClient._performRequest(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ serviceclient.js:264:7)     在ServiceBusService.ServiceClient._initDefaultFilter.filter(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ serviceclient.js:534:7)     在ServiceClient._performRequest(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ serviceclient.js:261:10)     在ServiceBusServiceClient._buildRequestOptions(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ servicebusserviceclient.js:107:5)     在Wrap.signRequest(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ serviceBus \ wrap.js:69:5)     在WrapTokenManager.getAccessToken(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ serviceBus \ wraptokenmanager.js:76:5)     在WrapService.wrapAccessToken.finalCallback(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ serviceBus \ wrapservice.js:98:7)     在ServiceClient._initDefaultFilter.filter(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ core \ serviceclient.js:538:11)     在WrapService.wrapAccessToken.processResponseCallback(D:\ home \ site \ wwwroot \ node_modules \ azure \ lib \ services \ serviceBus \ wrapservice.js:101:5)

2 个答案:

答案 0 :(得分:2)

命名空间

用于配置Node.js的namespaceService Bus标签下可见的access key(非常简单)。

访问密钥

不幸的是,它很容易与为特定消息传递功能实例(例如队列)定义的访问密钥混淆。提供无效的访问密钥可能会导致类似于相关的堆栈跟踪。

应该用于配置Node.js的Connection Information是可以从Service Bus窗口访问的Connection Information。要实现这一目标,您需要导航到Default Key主标签(带有云图标的标签),然后点击底部栏提供的DEFAULT ISSUER按钮。它是namespace部分正下方的access key

配置命名空间和访问密钥

azure.createServiceBusService()AZURE_SERVICEBUS_NAMESPACE都可以直接传递给AZURE_SERVICEBUS_ACCESS_KEY功能,或者(通过配置移动服务时)通过app settings和{{1}}键设置在{{1}}配置部分。

答案 1 :(得分:0)

确保使用Service Bus->命名空间中的顶级配置,而不是树中更深层的任何内容。不正确的访问密钥不会抛出有用的异常(例如"不能使用队列密钥来访问命名空间")而是产生上述问题。