Sitemap

Message Routing in Azure IoT Hub

2 min readMar 22, 2025

--

Introduction

Azure IoT Hub is a managed service that enables reliable and secure bi-directional communications between IoT applications and devices. One of its powerful features is message routing, which allows you to send device-to-cloud messages to various Azure services based on customizable routing queries.

Understanding Message Routing

Message routing in IoT Hub enables you to direct messages from your devices to specific endpoints in a scalable and automated manner. This includes telemetry data, device lifecycle events, and device twin changes.

Routing Endpoints

IoT Hub supports several types of endpoints for message routing:

  • Built-in endpoint: Compatible with Event Hubs.
  • Storage containers: For storing messages in Azure Blob Storage.
  • Service Bus queues and topics: For queuing messages.
  • Event Hubs: For streaming data.
  • Cosmos DB: For storing messages in a NoSQL database

Setting Up Message Routing

Step 1: Create an IoT Hub

First, create an IoT Hub in your Azure subscription. You can do this via the Azure portal, Azure CLI, or PowerShell.

Step 2: Register a Device

Register a device in your IoT Hub to start sending messages. This can be done using symmetric key authentication or X.509 certificates for enhanced security.

Step 3: Define Routing Queries

Routing queries allow you to filter and route messages based on their properties, body, and device twin tags. For example:

SELECT * FROM devices.messages WHERE temperature > 30

Step 4: Create Custom Endpoints

Create custom endpoints to route messages to different Azure services. For instance, you can route messages to a storage container:

def route_to_storage(message):
if message.device_id == "sensor1":
return "storage_container"
else:
return "event_hub"

Practical Examples

Example 1: Routing Telemetry Data to Blob Storage

def route_telemetry_to_blob(message):
if message.type == "telemetry":
return "blob_storage"
else:
return "default_endpoint"

In this example, telemetry messages are routed to Azure Blob Storage, while other messages are sent to the default endpoint.

Example 2: Routing Device Lifecycle Events to Service Bus

def route_lifecycle_events(message):
if message.event_type == "device_created":
return "service_bus_queue"
elif message.event_type == "device_deleted":
return "service_bus_topic"
else:
return "default_endpoint"

This example routes device lifecycle events to Service Bus queues and topics based on the event type.

Advanced Routing Techniques

Composed Routers

Combine multiple routing patterns to create complex message flows:

def composed_router(message):
if message.type == "telemetry":
return route_telemetry_to_blob(message)
else:
return route_lifecycle_events(message)

I hope this article would help you to understand Message Routing in Azure IoT Hub!!!

Get Suneet Bansal’s stories in your inbox

Join Medium for free to get updates from this writer.

Stay tuned and subscribe to my Medium Channel!!!

Thanks!!!

--

--

Suneet Bansal
Suneet Bansal

Written by Suneet Bansal

UI Architect | Fullstack Architect | Blogger | Technical Writer | bansal.suneet@gmail.com