我希望使用Microsoft网站中提供的示例代码将JSON文件发送到Azure事件中心。该代码似乎不正确,并且在事件中心中看不到以下上传的文件。
有人可以帮助发送实际的JSON文件吗?
import asyncio
from azure.eventhub import EventData
from azure.eventhub.aio import EventHubProducerClient
async def run():
producer = EventHubProducerClient.from_connection_string(
conn_str="foo",
eventhub_name="boo")
async with producer:
event_data_batch = await producer.create_batch()
event_data_batch.add(EventData(JSONFilepath))
await producer.send_batch(event_data_batch)
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
注意:我在运行程序时没有遇到错误。
答案 0 :(得分:1)
用于将JSON对象和JSON字符串发送到事件中心的代码段
import asyncio
import nest_asyncio
nest_asyncio.apply()
from azure.eventhub.aio import EventHubProducerClient
from azure.eventhub import EventData
import json
async def run():
# Create a producer client to send messages to the event hub.
# Specify a connection string to your event hubs namespace and
# the event hub name.
producer = EventHubProducerClient.from_connection_string("<>", eventhub_name="<>")
async with producer:
# Create a batch.
event_data_batch = await producer.create_batch()
# Add events to the batch.
#Method 1 - You provide a JSON string
body1 = '{"id":"device2","timestamp":"2016-01-17T01:17:00Z"}'
event_data_batch.add(EventData(body1))
#Method 2 - You get the JSON Object and convert to string
json_obj = {"id":"device3","timestamp":"2016-01-18T01:17:00Z"}
body2= json.dumps(json_obj)
event_data_batch.add(EventData(body2))
#This just sending the string which will not be captured by TSI
event_data_batch.add(EventData('Third event'))
# Send the batch of events to the event hub.
await producer.send_batch(event_data_batch)
loop = asyncio.get_event_loop()
loop.run_until_complete(run())