Iot Hub Event Python
Я искал это довольно много, я пытаюсь подключить приемник к моему iot-концентратору на Azure, используя Python, используя Azure Event SDK, но, к сожалению, безуспешно, мой приемник говорит мне, что это связано с клиентом, но на самом деле это никогда не происходит просматривает данные
мой приемник
#!/usr/bin/env python
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
"""
An example to show receiving events from an Event Hub partition.
"""
import os
import sys
import logging
import time
from azure.eventhub import EventHubClient, Receiver, Offset
# 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 ="amqps://iothub-ns-virtualab2-926709-043cc22e89.servicebus.windows.net/virtualab2"
# SAS policy and key are not required if they are encoded in the URL
USER = "iothubowner"
KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
CONSUMER_GROUP = "teststream"
OFFSET = Offset("-1")
PARTITION = "1"
total = 0
last_sn = -1
last_offset = "-1"
client = EventHubClient(ADDRESS, debug=True, username=USER, password=KEY)
try:
receiver = client.add_receiver(CONSUMER_GROUP, PARTITION, prefetch=5000, offset=OFFSET)
client.run()
print("client connected")
start_time = time.time()
print("listening")
batch = receiver.receive(timeout=5000)
while batch:
for event_data in batch:
last_offset = event_data.offset
last_sn = event_data.sequence_number
print("Received: {}, {}".format(last_offset.value, last_sn))
print(event_data.body_as_str())
total += 1
batch = receiver.receive(timeout=5000)
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 hub
1 ответ
Код, который у вас есть, работает, но есть несколько вещей, которые вы должны проверить:
Если вы используете конечную точку встроенных событий IoT Hub, убедитесь, что вы используете имя пространства имен из конечной точки, совместимой с концентратором событий, и имя, совместимое с концентратором событий, для имени. Адрес, с которым я проверял, выглядит так:
amqps://ihsuprodbyresXXXXXXnamespace.servicebus.windows.net/iothub-ehub-sample-XXXXX-XXXXXXXXXX
Убедитесь, что вы используете
iothubowner
ключевое значение.Убедитесь, что используемая вами группа потребителей была добавлена в конечную точку, совместимую с концентратором событий.
По умолчанию конечная точка, совместимая с концентратором событий, имеет два раздела - ваш код прослушивает сообщения только в одном из них.