2015-11-16 125 views
0

我正嘗試使用Node.js連接到Windows服務總線的本地實例。從節點連接到本地ServiceBus的連接字符串

PS C:\Users\Juan> Get-SBClientConfiguration 
Endpoint=sb://juan-vaio/MyNamespace;StsEndpoint=https://juan-vaio:9355/MyNamespace;RuntimePort=9354;ManagementPort=9355 

但是使用Azure的節點包我收到以下錯誤使用從節點此連接字符串時:

我從PowerShell中獲得我的連接字符串

CODE

var connectionString = "Endpoint=sb://localhost/MyNamespace;StsEndpoint=https://localhost:9355/MyNamespace;RuntimePort=9354;ManagementPort=9355"; 
var serviceBusService = Azure.createServiceBusService(connectionString); 

錯誤

 throw new Error('Invalid connection string setting key "' + key + '"'); 
      ^
Error: Invalid connection string setting key "runtimeport" 

我嘗試刪除連接字符串的runtimeport設置,但由於ManagementPort而失敗。如果我刪除一二它終於不能因爲不完整的設置連接:

throw new NoMatchError('The provided connection string "' + connectionString 
     ^
NoMatchError: The provided connection string "Endpoint=sb://localhost/MyNamespace;StsEndpoint=https://localhost:9355/MyNamespace;" 
does not have complete configuration settings. 

谷歌搜索一點點我發現,它似乎是一個已知的問題:

https://github.com/Azure/azure-sdk-for-node/issues/1254

但我想知道是否有解決方法,或者如果我做錯了什麼。

回答

3

Azure SDK for Node適用於Microsoft Azure Service Bus,不適用於Windows Server上的Service Bus。所以你不能直接使用它來連接本地服務總線。

他們的連接字符串是differect,見下圖:

對於Azure的服務總線,在一級方程式如下: Endpoint=sb://<azure-sb-name>.servicebus.windows.net/;SharedAccessKeyName=<key-name>;SharedAccessKey=<key> 對於服務總線的Windows Server中,一級方程式是這樣的:Endpoint=sb://yourHost/ServiceBusDefaultNamespace;StsEndpoint=https://yourHost:9355/ServiceBusDefaultNamespace;RuntimePort=9354;ManagementPort=9355

按照官方文檔https://msdn.microsoft.com/en-us/library/dn441376.aspx,Windows Server的Service Bus提供了與Microsoft Azure Service Bus提供的API類似的REST API。

enter image description here

所以,你可以參考在Azure服務總線的REST API https://msdn.microsoft.com/en-us/library/hh780717.aspx並與當地的更換爲天青的參數。

但是,我建議您在dotNet(https://msdn.microsoft.com/en-us/library/dn441398.aspxhttps://msdn.microsoft.com/en-us/library/dn441414.aspx)中使用Service Bus for Windows Server SDK,或參考文檔https://msdn.microsoft.com/en-us/library/dn574799.aspx嘗試從Java與AMQP進行連接。

+0

謝謝@Peter Pan。本地測試Azure Service Bus的「官方」方式是在本地使用Windows Service Bus實例。這就是你如何從.Net中完成的。我在提供答案但不接受它,留出一些時間來看看是否有其他人知道如何測試在本地使用Azure Service Bus的nodejs應用程序。 – Juan

+0

感謝@Peter潘,我現在正在嘗試使用amqp10其中有一個非阻塞API,越來越麻煩的身份驗證,但我想我已經找到了解決如何處理這個問題的答案。不要認爲azure-sdk將允許使用Windows ServiceBus然而 – Juan

+0

@Juan NodeJS有一個名爲'node-amqp10'(https://github.com/noodlefrenzy/node-amqp10)的軟件包項目已知支持Azure服務Bus和AMQP 1.0,但它對Azure並不穩定。我認爲你可以嘗試一下,因爲Windows服務總線支持AMQP 1.0/1.1。我仍然建議在NodeJS中使用REST API,儘管API文檔不是直接在官方網站中提供的。 –