我正在尝试使用Node.js连接到Windows服务总线的本地实例。
我从powershell获取了我的连接字符串:
PS C:\Users\Juan> Get-SBClientConfiguration
Endpoint=sb://juan-vaio/MyNamespace;StsEndpoint=https://juan-vaio:9355/MyNamespace;RuntimePort=9354;ManagementPort=9355
但是当使用azure-node软件包从Node中使用此连接字符串时,我收到以下错误:
CODE
var connectionString = "Endpoint=sb://localhost/MyNamespace;StsEndpoint=https://localhost:9355/MyNamespace;RuntimePort=9354;ManagementPort=9355";
var serviceBusService = Azure.createServiceBusService(connectionString);
ERROR
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
但我想知道是否有解决方法,或者我是否做错了。
答案 0 :(得分:3)
Azure SDK for Node适用于Microsoft Azure Service Bus,而不适用于Windows Server上的Service Bus。所以你不能直接用它来连接本地服务总线。
他们的连接字符串是不同的,见下文:
对于Azure Service Bus,这样的formule:
Endpoint=sb://<azure-sb-name>.servicebus.windows.net/;SharedAccessKeyName=<key-name>;SharedAccessKey=<key>
对于Windows Server上的Service Bus,这样的公式: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。
因此,您可以参考Azure Service Bus REST API https://msdn.microsoft.com/en-us/library/hh780717.aspx并将Azure的参数替换为本地的。
但是,我建议您在dotNet(https://msdn.microsoft.com/en-us/library/dn441398.aspx和https://msdn.microsoft.com/en-us/library/dn441414.aspx)中使用Service Server for Windows Server SDK,或者参考文档https://msdn.microsoft.com/en-us/library/dn574799.aspx尝试从Java连接到AMQP。