![](/img/trans.png)
[英]Error while deserializing Azure ServiceBus Queue message sent from node.js (azure sdk)
[英]ServiceBus Node.Js SDK throwing error upon queue creation
出于显而易见的原因,部分连接字符串/域名被星号混淆。
我正在使用 npm 中的"azure-sb": "^0.11.0"
。 下面是我尝试创建队列的代码片段。
/* Connection string taken from Azure Portal shared access policies */
let serviceBusService = azure.createServiceBusService(SERVICEBUS_CONNECTION_STRING);
serviceBusService.createQueueIfNotExists(SERVICE_BUS_QUEUE_NAME, function(error){
if(!error){
console.log(`Looks like we'll be up and running.`);
}
/* This statement gets executed. */
else {
console.error(`Something went wrong when trying to boot up: ${error}`);
}
});
尝试启动时出现问题:错误:401 - InvalidAudience:授权标头包含具有错误受众的令牌。 TrackingId: ******, SystemTracker:*****.servicebus.windows.net:Endpoint=sb:/******.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=** *****
我没有更改任何设置,使用默认连接字符串(就我所见,在任何地方都没有设置观众)并且它失败了。 有任何想法吗?
据我所知,如果你README.md
阅读了Azure/azure-sdk-for-node
README.md
文档,你会发现 Azure 服务总线有如下三个节点包。
实际上,他们要求您使用不同的身份验证方式来使用不同的功能,请仔细查看文档Authentication.md
。
所以对于azure-sb
,它似乎用于访问 Azure ServiceBus 服务,就像下面所说的 npm 包描述。
适用于 Node.js 的 Microsoft Azure SDK - 库
该项目提供了一个用于访问 Azure ServiceBus 服务的 Node.js 包。
要为服务总线实例创建队列,请参阅相关的 REST API Create Queue
,这是一个资源管理 API。 所以我推荐你需要的正确节点包是azure-arm-sb
with Service Principal Authentication
。
没有交互的示例代码如下所示。
const Azure = require('azure');
const MsRest = require('ms-rest-azure');
const ServiceBusManagementClient = require("azure-arm-sb");
MsRest.loginWithServicePrincipalSecret(
'clientId or appId',
'secret or password',
'domain or tenantId',
(err, credentials) => {
if (err) throw err
const client = new ServiceBusManagementClient(credentials, 'subscriptionId');
// ..use the client instance to manage service resources.
client.Queues.createOrUpdate(resourceGroupName, namespaceName, queueName, parameters: sbQueue, function(sbq) {
})
}
);
请参阅azure-arm-sb package
更多详细信息。 希望能帮助到你。
azure-sb
库是较旧的服务总线 SDK。 虽然我认为它应该可以工作,但我建议使用最近发布的@azure/service-bus
的最新版本 7.0.0。
版本 7 提供ServiceBusAdministrationClient
,可让您管理服务总线实体,支持使用连接字符串和 Azure Active Directory 凭据进行身份验证。
对于这个问题中的问题,这里是一个使用ServiceBusAdministrationClient
显示队列创建的示例 - AdministrationClient.ts
我知道这是一个迟到的回复,但以防万一有人遇到节点的旧服务总线 SDK 的问题并登陆这里,请参阅下面的链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.