代码之家  ›  专栏  ›  技术社区  ›  tillerstarr

Azure serviceBusService出现未处理的异常

  •  0
  • tillerstarr  · 技术社区  · 10 年前

    我正在尝试从我的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_moduless\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_moduless\azure\lib\services\core\serviceclient.js:261:10) 在ServiceBusServiceClient上_buildRequestOptions(D:\home\site\wwwroot\node_moduless\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.prrocessResponseCallback(D:\home\site\wwwroot\node_modules\azure\lib\services\serviceBus\WrapService.js:101:5)

    2 回复  |  直到 10 年前
        1
  •  2
  •   Jacek M    10 年前

    命名空间

    这个 namespace 用于配置Node.js的 Service Bus tab(这很简单)。

    访问密钥

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

    这个 access key 应该用于配置Node.js的是可以从 Connection Information 窗要到达该位置,您需要导航到 服务总线 主选项卡(一个带有云图标),然后单击 连接信息 按钮可从 底部的酒吧 。它是 Default Key 就在下面 DEFAULT ISSUER 部分

    配置命名空间和访问密钥

    二者都 命名空间 访问密钥 可以传递给 azure.createServiceBusService() 直接运行,或(在配置移动服务时)通过 AZURE_SERVICEBUS_NAMESPACE AZURE_SERVICEBUS_ACCESS_KEY 中的键 app settings 配置部分。

        2
  •  0
  •   tillerstarr    10 年前

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