Python Azure EventHub,无法订阅接收

Python Azure EventHub,无法订阅接收,python,azure,amqp,qpid,azure-eventhub,Python,Azure,Amqp,Qpid,Azure Eventhub,我试图通过Python从Azure EventHub接收消息,但不幸的是,我无法订阅它 我的脚本基于和另一个类似的问题已经被提出,不幸的是没有解决它 到我的设置: Python 2.7.9(Ubuntu 15.04) 通过pip安装的INTQPID质子: pip show python-qpid-proton ... Version: 0.11.1 ... 因此,我尝试以下方法: from proton import * import urllib key = urllib.quote(FOO

我试图通过Python从Azure EventHub接收消息,但不幸的是,我无法订阅它

我的脚本基于和另一个类似的问题已经被提出,不幸的是没有解决它

到我的设置: Python 2.7.9(Ubuntu 15.04)

通过pip安装的INTQPID质子:

pip show python-qpid-proton
...
Version: 0.11.1
...
因此,我尝试以下方法:

from proton import *
import urllib
key = urllib.quote(FOOBAR,"")
address = "amqps://name:" + key + "@nsname.servicebus.windows.net/eventhubname/ConsumerGroups/$Default/Partitions/0"
messenger = Messenger()
messenger.subscribe(address)

proton.MessengerException: Cannot subscribe to [ADDRESS]
名称/键应该是正常的,因为它在另一个应用程序中工作


有什么猜测吗?

您的密钥可能包含“/”,因此您可能希望转到azure portal,看看是否可以使用备用密钥。您可能必须创建一个新的“共享访问策略”


另一个选项是使用最新的azure eventhub Python SDK从Event Hub接收消息

azure eventhub在pypi上可用:

您可以按照以下步骤接收消息:

#/usr/bin/env python
# --------------------------------------------------------------------------------------------
#版权所有(c)微软公司。版权所有。
#根据麻省理工学院许可证授权。有关许可证信息,请参阅项目根目录中的License.txt。
# --------------------------------------------------------------------------------------------
"""
显示从事件中心接收事件的示例。
"""
导入操作系统
从azure.eventhub导入EventHubConsumerClient
连接\u STR=os.environ[“事件\u中心\u连接\u STR”]
EVENTHUB\u NAME=os.environ['EVENT\u HUB\u NAME']
def on_事件(分区_上下文,事件):
#把你的代码放在这里。
#如果操作是i/o密集型的,则多线程将具有更好的性能。
打印(“从分区:{}..format(partition\u context.partition\u id)接收到的事件”)
分区上的def初始化(分区上下文):
#把你的代码放在这里。
打印(“分区:{}已初始化。”.format(Partition\u context.Partition\u id))
分区上的def关闭(分区上下文,原因):
#把你的代码放在这里。
打印(“分区:{}已关闭,关闭原因:{}。”。格式(
分区\上下文。分区\ id,
原因
))
def on_错误(分区_上下文,错误):
#把你的代码放在这里。在on_错误回调中,分区_上下文可以为None。
如果分区为U上下文:
打印(“从分区接收时发生异常:{}”。.format(
分区\上下文。分区\ id,
错误
))
其他:
打印(“负载平衡过程中发生异常:{}”。.format(错误))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
消费者\u客户端=EventHubConsumerClient.from\u连接\u字符串(
连接线=连接线,
消费者组=“$Default”,
eventhub\u name=eventhub\u name,
)
尝试:
与消费者联合会客户:
消费者客户端接收(
on_事件=on_事件,
在分区上初始化=在分区上初始化,
在分区上关闭=在分区上关闭,
on_错误=on_错误,
起始_position=“-1”,#“-1”是从分区的开始。
)
除键盘中断外:
打印('已停止接收')

hi,似乎没有必要对密钥进行编码。请尝试使用Azure Portal中的原始密钥。任何结果,请让我知道。谢谢你的回复。尝试不编码密钥,但也失败。在我的密钥中有一个“/”导致连接失败:
proton.MessengerException:[-2]:连接错误(名称:keyuntlslash):getaddrinfo(名称,keyuntlslash):ai_socktype不支持Servname
,其中keyuntlslash是密钥的第一部分,不包括“/”