我使用此网址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(云)。感谢。
答案 0 :(得分:1)
是的,您可以将SAS与AMQP配合使用。策略名称而不是用户名,URL编码密钥代替密码。需要URL编码才能将键值中的任何非字母数字字符处理为+,/或=。
网址格式为:
amqps://<policyname>:<urlencoded(key)>@<namespace>.servicebus.windows.net
确保您的队列未启用分区。 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。”的队列。
保