1
votes

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.

1
Do you have a link to that sample code?Peter Bons
Answer - I had written this answer to send json strings & json objects to event hub. Pls let me know if this is what you are looking for or looking for something else on the same lines.Satya V
Also, in case the above did not help, pls share the link to the sample code.Satya V
Yes, that would be helpful.Learner

1 Answers

2
votes

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())