Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
订阅/侦听Azure事件中心的python脚本?_Python_Azure_Amqp_Qpid_Azure Eventhub - Fatal编程技术网

订阅/侦听Azure事件中心的python脚本?

订阅/侦听Azure事件中心的python脚本?,python,azure,amqp,qpid,azure-eventhub,Python,Azure,Amqp,Qpid,Azure Eventhub,我感兴趣的是从Python脚本中侦听事件中心,并在检测到入站消息时执行一些代码 在Ubuntu上,使用Python 2.7和示例“receiver”脚本,我尝试订阅一个URI,如下所示: amqps://<key name>:<key>@<namespace>.servicebus.windows.net/<event hub name>/ConsumerGroups/$Default/Partitions/0 amqps://:@.servic

我感兴趣的是从Python脚本中侦听事件中心,并在检测到入站消息时执行一些代码

在Ubuntu上,使用Python 2.7和示例“receiver”脚本,我尝试订阅一个URI,如下所示:

amqps://<key name>:<key>@<namespace>.servicebus.windows.net/<event hub name>/ConsumerGroups/$Default/Partitions/0
amqps://:@.servicebus.windows.net//ConsumerGroups/$Default/Partitions/0
返回以下错误:

proton.MessengerException: Cannot subscribe to <...>
proton.Messenger异常:无法订阅

我相信我的事件中心设置正确,因为我能够使用单独的“发送”脚本将事件发送到其中,Azure仪表板显示事件已经到达。但我无法作为订户连接以接收消息。

我试图在Ubuntu服务器上重现您的问题,但失败

虽然你说过要正确设置活动中心,我仍然建议您可以通过Azure old portal上活动中心的
配置
选项卡页面再次检查
密钥名称
密钥
,并确保定义的策略名称
密钥名称
具有
共享访问策略
中的权限
侦听
。或者,您可以在服务总线的访问连接信息中使用
RootManageSharedAccessKey
及其密钥重试

此外,您还可以参考示例
事件\u hubs\u receive\u many.py
at(它基于质子示例
async.py
at)来检查您的代码。


试试./examples/recv.py,看看它是否有效。请注意,SAS密钥需要进行URL编码,并且关联的策略已定义侦听操作。需要从事件中心配置更新地址。

上有更新版本的azure eventhub Python SDK v5

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

#/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”是从分区的开始。
)
除键盘中断外:
打印('已停止接收')
如果您已经在使用v1sdk,那么可以按照迁移程序