谁能通过python事件中心SDK解释如何使用“事件中心兼容名称”和“事件中心兼容端点”。 SDK要求
# Address can be in either of these formats:
# "amqps://<URL-encoded-SAS-policy>:<URL-encoded-SAS-
# "key>@<mynamespace>.servicebus.windows.net/myeventhub"
# "amqps://<mynamespace>.servicebus.windows.net/myeventhub"
ADDRESS = os.environ.get('EVENT_HUB_ADDRESS')
# SAS policy and key are not required if they are encoded in the URL
USER = os.environ.get('EVENT_HUB_SAS_POLICY')
KEY = os.environ.get('EVENT_HUB_SAS_KEY')
在此示例中,我需要帮助将默认端点下给出的字符串进行拟合。
答案 0 :(得分:1)
鉴于您提到“事件中心兼容的名称”和“事件中心兼容的端点”,我假设您正在尝试连接到物联网中心的事件中心兼容的端点。
使用此与事件中心兼容的名称:iothub-ehub-getstarted-99999-xxxxxxxxxx
以及此与事件中心兼容的端点:Endpoint=sb://ihsuprodbyres999dednamespace.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
然后 EVENT_HUB_ADDRESS 如下:amqps://ihsuprodbyres999dednamespace.servicebus.windows.net/iothub-ehub-getstarted-99999-xxxxxxxxxx
对于 EVENT_HUB_SAS_POLICY 和 EVENT_HUB_SAS_KEY 值,您可以使用 iothubownwer 或 service 作为SAS策略,与它的对应密钥。您可以在IoT中心的共享访问策略页面上的门户中找到这些内容。
答案 1 :(得分:0)
如果要使用最新的Azure Event Hub Python SDK从IoT中心内置终结点接收设备到云的消息,还有另一种选择,您可以参考以下代码:
import os
import sys
import logging
import time
from azure.eventhub import EventHubClient, Receiver, Offset
PARTITION = "0"
total = 0
last_sn = -1
last_offset = "-1"
client = EventHubClient.from_iothub_connection_string("{iot hub connection string}", debug=True)
try:
receiver = client.add_receiver("$default", PARTITION, operation='/messages/events')
client.run()
start_time = time.time()
for event_data in receiver.receive(timeout=100):
last_offset = event_data.offset
last_sn = event_data.sequence_number
print("Received: {}, {}".format(last_offset, last_sn))
total += 1
end_time = time.time()
client.stop()
run_time = end_time - start_time
print("Received {} messages in {} seconds".format(total, run_time))
except KeyboardInterrupt:
pass
finally:
client.stop()
我想如果没有 特殊的原因,最好使用IoT中心自己的特定Python客户端库来接收消息。