--- title: Event Hubs features and terminology description: Learn about the core concepts, features, and terminology of Azure Event Hubs including namespaces, partitions, consumers, and protocols. ms.topic: concept-article ms.date: 01/12/2026 --- # Event Hubs features and terminology This article explains the core concepts and terminology of Azure Event Hubs. For a high-level overview, see [What is Event Hubs?](./event-hubs-about.md) ## Concepts at a glance | Concept | Description | |---------|-------------| | **Namespace** | Management container for one or more event hubs. Controls network access and scaling. | | **Event hub** | An append-only log that stores events. Equivalent to a Kafka topic. | | **Partition** | Ordered sequence of events within an event hub. Enables parallel processing. | | **Producer/Publisher** | Application that sends events to an event hub. | | **Consumer** | Application that reads events from an event hub. | | **Consumer group** | Independent view of the event stream. Multiple groups can read the same data separately. | | **Offset** | Position of an event within a partition. Used to track reading progress. | | **Checkpointing** | Saving the current offset so consumers can resume from where they left off. | --- ## Architecture ### Namespace An Event Hubs **namespace** is a management container for event hubs (or topics, in Kafka parlance). It provides network endpoints and controls access through features like [IP filtering](event-hubs-ip-filtering.md), [virtual network service endpoints](event-hubs-service-endpoints.md), and [Private Link](private-link-service.md). :::image type="content" source="./media/event-hubs-features/namespace.png" alt-text="Diagram showing an Event Hubs namespace containing multiple event hubs."::: ### Partitions [!INCLUDE [event-hubs-partitions](./includes/event-hubs-partitions.md)] --- ## Event producers A **producer** (or publisher) is any application that sends events to an event hub. ### Publishing options | Method | Description | |--------|-------------| | **Azure SDKs** | [.NET](event-hubs-dotnet-standard-getstarted-send.md), [Java](event-hubs-java-get-started-send.md), [Python](event-hubs-python-get-started-send.md), [JavaScript](event-hubs-node-get-started-send.md), [Go](event-hubs-go-get-started-send.md) | | **REST API** | [HTTP POST requests](/rest/api/eventhub/) for lightweight clients | | **Kafka clients** | Use existing Kafka producers without code changes | | **AMQP 1.0** | Any AMQP client such as [Apache Qpid](https://qpid.apache.org/) | ### Key behaviors - **Batch or individual**: Publish events one at a time or in batches. Maximum 1 MB per publish operation. - **Partition keys**: Specify a partition key to group related events in the same partition, ensuring ordered delivery. - **Authorization**: Use Microsoft Entra ID (OAuth2) or Shared Access Signatures (SAS) for access control. :::image type="content" source="./media/event-hubs-features/partition_keys.png" alt-text="Diagram showing how partition keys map events to specific partitions."::: ### Publisher policies Publisher policies enable granular control when you have many independent publishers. Each publisher uses a unique identifier: ```http //.servicebus.windows.net//publishers/ ``` The publisher name must match the SAS token used for authentication. When using publisher policies, the **PartitionKey** must match the publisher name. --- ## Event consumers A **consumer** is any application that reads events from an event hub. Event Hubs uses a **pull model**—consumers request events rather than having events pushed to them. ### Consumer groups A **consumer group** is an independent view of the event stream. Multiple consumer groups can read the same event hub simultaneously, each tracking their own position. | Guideline | Recommendation | |-----------|----------------| | Readers per partition | One active reader per partition within a consumer group (up to five in special scenarios) | | Default group | Every event hub has a default consumer group (`$Default`) | | Multiple applications | Create separate consumer groups for each application (analytics, archival, alerting) | ```http //.servicebus.windows.net// //.servicebus.windows.net// ``` :::image type="content" source="./media/event-hubs-about/event_hubs_architecture.png" alt-text="Diagram showing multiple consumer groups reading from the same event hub."::: ### Offsets An **offset** is the position of an event within a partition—think of it as a cursor. Consumers use offsets to specify where to start reading. You can start from: - A specific offset value - A timestamp - The beginning or end of the stream :::image type="content" source="./media/event-hubs-features/partition_offset.png" alt-text="Diagram showing events in a partition with offset positions."::: ### Checkpointing **Checkpointing** is when a consumer saves its current offset. This enables: - **Resumption**: If a consumer disconnects, it resumes from the last checkpoint - **Failover**: A new consumer instance can take over from where another left off - **Replay**: Process historical events by specifying an earlier offset > [!IMPORTANT] > In AMQP, checkpointing is the consumer's responsibility. The Event Hubs service provides offsets, but consumers must store checkpoints. [!INCLUDE [storage-checkpoint-store-recommendations](./includes/storage-checkpoint-store-recommendations.md)] ### Event processor clients The Azure SDKs provide intelligent consumer clients that handle partition management, load balancing, and checkpointing automatically: | Language | Client | |----------|--------| | .NET | [EventProcessorClient](/dotnet/api/azure.messaging.eventhubs.eventprocessorclient) | | Java | [EventProcessorClient](https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClient.java) | | Python | [EventHubConsumerClient](/python/api/azure-eventhub/azure.eventhub.aio.eventhubconsumerclient) | | JavaScript | [EventHubConsumerClient](/javascript/api/@azure/event-hubs/eventhubconsumerclient) | ### Event data structure Each event contains: - **Body**: The event payload - **Offset**: Position in the partition - **Sequence number**: Order within the partition - **User properties**: Custom metadata - **System properties**: Service-assigned metadata (enqueue time, etc.) --- ## Data management ### Event retention Events are automatically removed based on a time-based retention policy. | Tier | Default | Maximum | |------|---------|---------| | Standard | 1 hour | 7 days | | Premium | 1 hour | 90 days | | Dedicated | 1 hour | 90 days | Key points: - Events can't be explicitly deleted - Retention changes apply to existing events - Events become unavailable exactly when the retention period expires > [!NOTE] > Event Hubs is a real-time streaming engine, not a database. For long-term storage, use [Event Hubs Capture](event-hubs-capture-overview.md) to archive events to [Azure Storage](../storage/blobs/storage-blobs-overview.md), [Data Lake Storage](../data-lake-store/data-lake-store-overview.md), or [Azure Synapse](store-captured-data-data-warehouse.md). ### Event Hubs Capture [Capture](event-hubs-capture-overview.md) automatically saves streaming data to Azure Blob Storage or Azure Data Lake Storage. Configure a minimum size and time window to control capture frequency. :::image type="content" source="./media/event-hubs-features/capture.png" alt-text="Diagram showing Event Hubs Capture writing data to Azure Storage."::: | Format | Description | |--------|-------------| | **Avro** | Default format for captured data | | **Parquet** | Available through the no-code editor in Azure portal ([learn more](../stream-analytics/capture-event-hub-data-parquet.md?toc=%2Fazure%2Fevent-hubs%2Ftoc.json)) | ### Log compaction [Log compaction](log-compaction.md) retains only the latest event for each unique key, rather than using time-based retention. Useful for maintaining current state without storing full history. --- ## Protocols Event Hubs supports multiple protocols for flexibility across different client types. | Protocol | Send | Receive | Best for | |----------|------|---------|----------| | **AMQP 1.0** | Yes | Yes | High throughput, low latency, persistent connections | | **Apache Kafka** | Yes | Yes | Existing Kafka applications (version 1.0+) | | **HTTPS** | Yes | No | Lightweight clients, firewall-restricted environments | ### Protocol comparison - **AMQP**: Requires persistent bidirectional socket. Higher initial cost, but better performance for frequent operations. Used by Azure SDKs. - **Kafka**: Native support means existing Kafka applications work without code changes. Just reconfigure the bootstrap server to point to your Event Hubs namespace. - **HTTPS**: Simple HTTP POST for sending. No receiving support. Good for occasional, low-volume publishing. For Kafka integration details, see [Event Hubs for Apache Kafka](azure-event-hubs-apache-kafka-overview.md). --- ## Access control ### Microsoft Entra ID Microsoft Entra ID provides OAuth 2.0 authentication with role-based access control (RBAC). Assign built-in roles to control access: | Role | Permissions | |------|-------------| | **Azure Event Hubs Data Owner** | Full access to send and receive events | | **Azure Event Hubs Data Sender** | Send events only | | **Azure Event Hubs Data Receiver** | Receive events only | For details, see [Authorize access with Microsoft Entra ID](authorize-access-azure-active-directory.md). ### Shared Access Signatures (SAS) SAS tokens provide scoped access at the namespace or event hub level. A SAS token is generated from a SAS key and typically grants only **send** or **listen** permissions. For details, see [Shared Access Signature authentication](../service-bus-messaging/service-bus-sas.md). ### Application groups [Application groups](resource-governance-overview.md) let you define resource access policies (like throttling) for collections of client applications that share a security context (SAS policy or Microsoft Entra application ID). --- ## Related content ### Get started - [.NET quickstart](event-hubs-dotnet-standard-getstarted-send.md) - [Java quickstart](event-hubs-java-get-started-send.md) - [Python quickstart](event-hubs-python-get-started-send.md) - [JavaScript quickstart](event-hubs-node-get-started-send.md) ### Learn more - [Scalability and throughput units](event-hubs-scalability.md) - [Availability and consistency](event-hubs-availability-and-consistency.md) - [Event Hubs Capture overview](event-hubs-capture-overview.md) - [Event Hubs for Apache Kafka](azure-event-hubs-apache-kafka-overview.md) ### Reference - [Quotas and limits](event-hubs-quotas.md) - [Event Hubs FAQ](event-hubs-faq.yml) - [Event Hubs samples](event-hubs-samples.md)