Welcome to Microsoft Q&A.
Thanks for sharing the details of your architecture scenario. Since you need to ingest data into IoT Hub and then fan it out to different downstream paths batch ingestion into Microsoft Fabric and real-time isolated streams for individual customers it’s critical to choose the right messaging service for scalability, isolation, and operational simplicity.
Below is a consolidated comparison of both options, along with a recommendation based on your requirements.
1. Event Hubs with One Consumer Group per Customer
Event Hubs is optimized for high-throughput streaming, partitioned ingestion, and scenarios where many independent readers consume the same event stream. However, it does not provide true isolation at the tenant/customer level.
Pros
- Excellent for large-scale, real-time streaming
- Supports many concurrent consumers via consumer groups
- Simple to run a single pipeline for all events
- Ideal for analytics, reprocessing, and Fabric ingestion
Cons
- No data isolation all customers receive the same stream unless you implement filtering
- Customer-specific routing becomes your responsibility
- Slow consumers can affect throughput
- Hard limit of 100 consumer groups per Event Hub
- Higher management overhead once customer count increases
Conclusion
Event Hubs works well for shared streams and analytics, but it is not ideal for strict customer-specific isolation.
2. Event Grid with One Custom Topic per Customer
Event Grid provides event-based push delivery with strong isolation boundaries. Each topic/subscription can act as a completely separate event channel, making it a strong choice when customer segregation is required.
Pros
- Built-in tenant-level isolation each customer gets their own topic/subscription
- Customers never see events meant for others
- Supports routing, filtering, and per-customer permissions
- Lightweight, fast, and low-latency “push” delivery
- Scales automatically based on event volume
Cons
- More topics to manage (but 10–100 is fully manageable)
- Lower throughput than Event Hubs
- No built-in event replay like Event Hubs
Conclusion
Event Grid aligns better with your requirement for connection-level isolation, secure multi-tenant distribution, and clean event separation.
3. Recommendation Based on Your Requirements
Given that you:
Have 10–100 customers
Need real-time distribution
Require strict customer isolation
Need to avoid cross-customer data exposure
Event Grid with a dedicated custom topic per customer is the recommended approach.
This provides:
Strong tenant isolation
Per-customer security boundaries
No customer-side filtering
Clear, simple, and maintainable routing
Event Hubs is better suited for your batch path and Fabric ingestion, not customer-isolated fan-out.
4. How to Structure Event Grid Topics
If you choose Event Grid, there are two scalable ways to organize topics:
A. Topic-Per-Customer (Best Isolation – Recommended)
company.events.customerA
company.events.customerB
company.events.customerC
Pros: Maximum isolation, simple access control Cons: More topics to manage
B. Domain Topics + Customer Subscriptions with Filters
company.events.deviceTelemetry
company.events.alerts
company.events.maintenance
Customers receive only filtered events through subscription rules.
This approach is easier to manage but provides weaker isolation compared to topic-per-customer.
5. Putting the Architecture Together
A balanced hybrid architecture could look like this:
IoT Hub → Event Hub → Microsoft Fabric (batch ingestion, analytics, replay)
IoT Hub → Event Grid → Customer-specific real-time streams (isolated topics)
This allows you to use Event Hubs where replay and throughput matter, and Event Grid where security and isolation matter.
Please refer this
- Event Hubs Overview
- Event Hubs Consumer Groups
- Connecting IoT Devices to Azure: IoT Hub and Event Hubs
- Event Grid Overview
- Azure IoT Hub and Event Grid
I Hope this helps. Do let me know if you have any further queries.
If this answers your query, could you please take a moment to retake the survey by accepting this response? Your feedback is greatly appreciated.
Thank you!