有沒有辦法使用Node.js SDK中的共享訪問簽名密鑰連接到Azure服務總線訂閱?我們希望使用SAS密鑰來讀取訂閱中的消息。如何使用SAS密鑰連接到使用Node.js SDK的Azure服務總線訂閱?
documentation中有一條約SAS,但沒有具體的。
我找不出來。
有沒有辦法使用Node.js SDK中的共享訪問簽名密鑰連接到Azure服務總線訂閱?我們希望使用SAS密鑰來讀取訂閱中的消息。如何使用SAS密鑰連接到使用Node.js SDK的Azure服務總線訂閱?
documentation中有一條約SAS,但沒有具體的。
我找不出來。
共享訪問簽名(SAS)是Service Bus消息的主要安全機制。通常,Service Bus發佈者的SAS令牌僅通過特定隊列或主題的發送和接收特權創建。因此,您需要使用連接字符串來連接到Azure服務總線名稱空間。
該軟件包允許您輕鬆生成共享訪問簽名:https://github.com/mitchdenny/shared-access-signature。
關於如何通過REST API使用SAS令牌將消息發送到服務總線隊列或主題,您可以參考https://docs.microsoft.com/en-us/rest/api/servicebus/send-message-to-queue。請參閱Shared Access Signature Authentication with Service Bus。
我們將在後端生成sas密鑰。我們考慮在客戶端使用Node.js SDK讀取消息。這就是爲什麼我問是否有使用Node SDK讀取帶有SAS密鑰的消息的方法。我們切換到使用REST API來使用'https'模型讀取節點中的消息。 –
在回答您的評論:
理解,但沒有創建一個實例,您將無法針對服務總線操作做任何事情 - 這包括能夠從訂閱讀取消息沒有?
所以理論上你的代碼應該是這個樣子:
var serviceBusConnectionString = "Endpoint=sb://somens.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=mykey";
var retryOperations = new azure.ExponentialRetryPolicyFilter();
var serviceBusService = azure.createServiceBusService(serviceBusConnectionString).withFilter(retryOperations);
serviceBusService.receiveSubscriptionMessage('MyTopic', 'LowMessages', function(error, receivedMessage){
if(!error){
// Message received and deleted
console.log(receivedMessage);
}
});
原始:
檢查這一個,以及followup stackoverflow answer,結合這兩個環節應該排序你出去?
感謝
我不想用連接字符串創建服務總線實例。我想創建一個服務總線實例,以使用SAS密鑰從訂閱中讀取消息。 –
不幸的是,我們嘗試過沒有成功的結果。 –
你可以發佈一些示例代碼 - 所以我們可以看到你想實現什麼? –
你有[從前陣子在流動答案堆棧]見過這個(http://stackoverflow.com/questions/21089550/azure-servicebus-sas-in-node-js-sdk)? –
我已經看到了,但那是在2014年,我認爲自那時起SDK發生了一些變化。 –