ServiceBusConfiguration.configureWithConnectionString无法正常工作,错误"密钥' SharedAccessKeyName'对此连接字符串无效"

时间:2014-12-03 12:07:07

标签: java azure sdk servicebus

我正在使用最新的Azure java sdk(版本0.6),但是当我使用服务总线配置“configureWithConnectionString”函数时,我发现我遇到了问题。 这是我的代码,

//get config
string connectionString = "Endpoint=sb://testservicebusnamespace.servicebus.windows.net/;SharedAccessKeyName=MySharedAccessKey;SharedAccessKey=<this is secret not show>";
config = new Configuration();
ServiceBusConfiguration.configureWithConnectionString(null, config, connectionString);

//create service
service = ServiceBusService.create(config);

我从Azure的服务总线命名空间门户获取连接字符串。但是当我运行此代码时,它会抛出异常“密钥'SharedAccessKeyName'对此连接字符串无效”。

我不知道是什么问题,因为我从Azure门户获得了连接,并且我检查了它的内容(SharedAccessKeyName,SharedAccessKey),它们是对的。

所以有人可以帮助我吗?这是我的问题还是这个SDK需要更新(因为我听说门户网站已经使用过SAS,但SDK仍然使用ACS进行身份验证)?

非常感谢。

2 个答案:

答案 0 :(得分:0)

看起来Java Azure SDK(0.6.0)仍然使用ACS进行身份验证。见this github issue评论:

  

当前SDK使用具有ACS身份验证模式的服务总线命名空间,但不使用SAS令牌身份验证模式的新创建的servicebus命名空间。我们将调查此问题

  

一种解决方法是通过PowerShell创建服务总线命名空间。   这似乎默认启用ACS auth模式。命令是:

     

New-AzureSBNameSpace -Name MyNameSpace -Location“West Europe”

     

记下运行命令后得到的“DefaultKey”。您   需要使用ServiceBusConfiguration,我不知道是否   可以通过Azure管理门户获得。使用“所有者”作为   configureWithWrapAuthentication的authenticationName参数。

答案 1 :(得分:0)

我要添加此答案,因为我认为自己注定要失败。但是找到了一个新图书馆。

这种依赖关系(在我写这篇文章时,最新的版本是0.5.0)……给您带来了问题。

          <dependency>
                 <groupId>com.microsoft.windowsazure</groupId>
                 <artifactId>microsoft-azure-api-servicebus</artifactId>
                 <version>0.5.0</version>
          </dependency>

Microsoft稍微更改了组ID。这是迄今为止似乎有更多更新的依赖项。

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-servicebus</artifactId>
    <version>0.9.7</version>
</dependency>

此处的Maven链接:https://search.maven.org/#artifactdetails%7Ccom.microsoft.azure%7Cazure-servicebus%7C0.9.7%7Cjar

所以这是一个古老的问题。但是希望这可以使人朝着正确的方向前进。