Azure Service Bus AMQP异常

时间:2014-12-29 15:58:28

标签: azure jms amqp servicebus

我使用此网址http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/中的示例。我有两个问题:

1。 ACS或SAS

连接网址

amqps://[username]:[password]@[namespace].servicebus.windows.net

用户名和密码来自ACS身份验证,但Azure Service Bus已将其身份验证从ACS更改为SAS。它是否也支持SAS身份验证?与用户名一样是SAS策略,密码是SAS策略的密钥。

2。跑步抛出异常

即使我使用ACS(如果我使用powershell创建命名空间,它仍然是ACS)或SAS,当从http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/运行示例代码时,它们都会抛出异常而失败。

Exception:"org.apache.qpid.amqp_1_0.client.Sender$SenderCreationException:
Peer did not create remote endpoint for link". 

有没有办法解决这个问题?

顺便说一下,我连接的不是Windows服务总线(内部部署),而是Azure Service Bus(云)。感谢。

2 个答案:

答案 0 :(得分:1)

RE:1。ACS或SAS

是的,您可以将SAS与AMQP配合使用。策略名称而不是用户名,URL编码密钥代替密码。需要URL编码才能将键值中的任何非字母数字字符处理为+,/或=。

网址格式为:

amqps://<policyname>:<urlencoded(key)>@<namespace>.servicebus.windows.net

RE:2。运行抛出异常

确保您的队列未启用分区。 ServiceBus不支持具有分区队列的AMQP,但默认情况下会创建启用分区的队列。

我有完全相同的错误,并使用&#34;启用分区&#34;重新创建队列未经检查为我解决了。

请参阅本文底部的分区实体限制部分:https://msdn.microsoft.com/en-us/library/azure/dn520246.aspx

  

分区队列和主题仅可通过SBMP或HTTP / HTTPS使用。将来会增加AMQP支持。

答案 1 :(得分:0)

可以肯定的是,您是否在服务总线命名空间内创建了名为queue的“queue1”。 从你的教程:

  

本指南假设您已拥有Service Bus命名空间   包含名为“queue1。”的队列。