In part two of our tutorial, we will read back the events from our messages that we streamed into our Event Hub in part 1. For a real stream, you will need to start the streaming code and ensure that you are sending more than ten messages (otherwise your stream will have stopped by the time you start reading :)). It will still work though.
So the code is pretty much along the same lines, same packages etc. Let’s take a look.
Import the libraries we need:
import os
import sys
import logging
import time
from azure.eventhub import EventHubClient, Receiver, Offset
Set the connection properties to Event Hub:
ADDRESS = "amqps://<namespace.servicebus.windows.net/<eventhubname>"
USER = "<policy name>"
KEY = "<primary key>"
CONSUMER_GROUP = "$default"
OFFSET = Offset("-1")
PARTITION = "0"
This time I am using my listening USER instead of my sending USER policy.
Next we are going to take the events from the Event Hub and print each json transaction message. I will try to go through offsets in a bit more detail another time, but for now this will listen and return back your events.
total = 0
client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
try:
receiver = client.add_receiver(CONSUMER_GROUP, PARTITION, prefetch=5000, offset=OFFSET)
client.run()
start_time = time.time()
batch = receiver.receive(timeout=5000)
while batch:
for event_data in batch:
print("Received: {}, {}".format(last_offset.value, last_sn))
print(event_data.message)#body_as_str())
total += 1
batch = receiver.receive(timeout=5000)
end_time = time.time()
client.stop()
run_time = end_time - start_time
And voila! You now know how to stream to and read from Azure Event Hub using Python 🙂
Let me know if you have any questions!