Reputation: 175
I wish to send a JSON file to Azure event hub using the sample code given in Microsoft website. The code looks to be incorrect and not seeing the below uploaded file in event hub.
Could someone help on how to send the actual JSON file?
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())
Note: I am not facing error while running the program.
Upvotes: 2
Views: 8480
Reputation: 4164
A code snippet to send JSON Objects & JSON String to event Hub
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())
Upvotes: 4