![](/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.