如何通过python

时间:2018-05-14 14:10:36

标签: azure-eventhub

我正在尝试将许多iot对象连接到eventhub并将它们保存到blob存储(也是一个sql数据库)。我想用python做这个(我不确定这是否是推荐的做法)。有关python的文档令人困惑。我尝试了一些例子,但他们创建了一个blob存储条目,但条目似乎无关紧要。

这样的事情: Objavro.codecnullavro.schema \ EC { “类型”: “记录”, “名”: “EVENTDATA”, “命名空间”: “Microsoft.ServiceBus.Messaging”, “田”:[{ “Name”: “的SequenceNumber” “类型”: “长”} ...

这不是我发送的内容。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以使用azure-eventhub Python SDK将消息发送到pypi上可用的事件中心。

有一个send sample显示了如何发送消息:

import os
from azure.eventhub import EventHubProducerClient, EventData
producer = EventHubProducerClient.from_connection_string(
    conn_str=CONNECTION_STR,
    eventhub_name=EVENTHUB_NAME
)
with producer:
    event_data_batch = producer.create_batch()
    event_data_batch.add(EventData('Single message'))
    producer.send_batch(event_data_batch)

我对The documentation about python was confusing. I tried a few examples but they create an entry to blob storage but entries seems to be irrelevant.

感兴趣

您可以和我分享您的代码吗?我想知道事件中心和存储Blob的输入/输出是什么,数据处理流程如何。

顺便说一句,要使用Azure Storage Blob Python SDK,可以查看repo和[blob示例]以获取更多信息。

答案 1 :(得分:0)

这是用于使用kafka-python在eventhub中插入新消息的连接字符串格式。如果您使用的是kafka并想替换,则只需更改此连接字符串即可。

import ssl
context = ssl.create_default_context()
context.options &= ssl.OP_NO_TLSv1
context.options &= ssl.OP_NO_TLSv1_1

self.kafka = KafkaProducer(bootstrap_servers=KAFKA_HOST,connections_max_idle_ms=5400000,security_protocol='SASL_SSL',value_serializer=lambda v: json.dumps(v).encode('utf-8'),sasl_mechanism='PLAIN',sasl_plain_username='$ConnectionString',sasl_plain_password={YOUR_KAFKA_ENDPOINT},api_version = (0,10),retries=5,ssl_context = context)

KAFKA_HOST =“ {your_eventhub} .servicebus.windows.net:9093” KAFKA_ENDPOINT =“ Endpoint = sb:// {your_eventhub} .servicebus.windows.net /; SharedAccessKeyName = RootSendAccessKey; SharedAccessKey = {youraccesskey}”

您可以从Azure控制台中找到KAFKA_HOST和KAFKA_ENDPOING。