【问题标题】:Unhandled Exception with Azure serviceBusServiceAzure serviceBusService 未处理的异常
【发布时间】:2014-09-24 05:34:14
【问题描述】:

我正在尝试从我的 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)

【问题讨论】:

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


    【解决方案1】:

    命名空间

    用于配置 Node.js 的 namespace 位于 Service Bus 选项卡下可见(非常简单)。

    访问密钥

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

    应该用于配置 Node.js 的 access key 是可从 Connection Information 窗口访问的那个。要到达那里,您需要导航到Service Bus 主选项卡(带有云图标的选项卡),然后单击底部栏 中的Connection Information 按钮。它是DEFAULT ISSUER 部分正下方的Default Key。

    配置命名空间和访问密钥

    namespace 和access key 都可以直接传递给azure.createServiceBusService() 函数,或者(在配置移动服务时)通过app settings 配置部分中的AZURE_SERVICEBUS_NAMESPACE 和AZURE_SERVICEBUS_ACCESS_KEY 键设置。

    【讨论】:

      【解决方案2】:

      确保您使用的是服务总线->命名空间中的顶级配置,而不是树中更深的任何东西。不正确的访问密钥不会引发有用的异常(例如“无法使用队列密钥访问命名空间”),而是会产生上述问题。

      【讨论】:

        猜你喜欢
        • 2020-11-13
        • 2016-09-08
        • 2017-10-31
        • 2018-12-27
        • 2011-11-19
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多