An Azure real-time data ingestion service.
Azure Event Hubs’ Kafka interface currently does not support Kafka transactions or exactly-once semantics, even though there is a separate preview feature for “Kafka Transactions” documented for certain tiers.
In the Event Hubs Kafka configuration guidance, transactions and EOS are explicitly listed as not supported:
The following Kafka features and configurations aren't available with Event Hubs:
Feature Reason Transactions Not currently supported Exactly-once semantics (EOS) Not currently supported
Because transactions are not supported at the Kafka protocol level in this configuration, behavior that depends on Kafka’s transaction coordinator semantics—such as automatic abort after transaction.timeout.ms / max.transaction.timeout.ms and advancement of lastStableOffset for read_committed consumers—cannot be relied on to behave like native Apache Kafka. This matches the symptoms described: read_committed consumers can appear “stuck” because the expected commit/abort markers and last-stable-offset progression are not guaranteed.
Where the transactional API is supported (Kafka Transactions public preview on Premium/Dedicated), the documented model is the standard Kafka pattern: transactional producer with enable.idempotence=true and transactional.id, consumer with isolation.level=read_committed, and automatic abort if the transaction is not completed before max.transaction.timeout.ms (default 15 minutes, overridable via transaction.timeout.ms). However, the separate configuration guidance for Kafka on Event Hubs still states that transactions and EOS are not supported, which means this functionality is limited and not generally available as a fully compatible Kafka feature.
Given the current documented limitations, the observed behavior—read_committed consumers not unblocking as in native Kafka—is consistent with the fact that Kafka transactions are not fully supported. For workloads that require reliable progress without depending on transactional markers, consider:
- Avoiding
isolation.level=read_committedand usingread_uncommittedsemantics, or - Designing idempotent processing and exactly-once behavior at the application level instead of relying on Kafka transactions.
For scenarios that must use the transactional preview feature, this behavior should be treated as a potential service issue and raised with Azure Support, referencing the Kafka Transactions preview documentation.
References: