Summary
The public Event Hubs surface embeds azure-core-amqp, which is unreleased and mid migration from uAMQP to a Rust implementation. Five public headers include azure/core/amqp/internal/*, the client sources still branch on ENABLE_UAMQP and ENABLE_RUST_AMQP, and the public EventData model exposes AmqpMessage and AmqpValue.
This workstream settles the transport and insulates the public surface. The first item, the transport decision, is the gate for #7254, because link rebuild and token refresh both land in transport-conditional code. Make that decision first and on its own. The other four items are surface cleanup and do not block the reliability work. Severity tags follow the key in #7252.
Motivation
Event Hubs is the only consumer of azure-core-amqp, so the AMQP layer is part of the GA surface in practice. That package is at 1.0.0-beta.12 (Unreleased). In .NET the transport is fully internal, and the public API listing exposes no transport type (sdk/eventhub/Azure.Messaging.EventHubs/api/Azure.Messaging.EventHubs.netstandard2.0.cs).
The C++ client branches on the transport in the send path (src/producer_client.cpp:95-111), the receiver setup (src/partition_client.cpp:107-177), and client close (src/consumer_client.cpp:56-67). Two transports mean two behavior sets under one version number.
Five public headers include _internal AMQP headers: inc/azure/messaging/eventhubs/consumer_client.hpp:12, producer_client.hpp:11, partition_client.hpp:9, eventhubs_exception.hpp:6, and processor.hpp:11. The _internal namespace carries no stability promise, yet it sits in the GA contract. The public EventData model also binds the azure-core-amqp model types into that contract (inc/azure/messaging/eventhubs/models/event_data.hpp:5-6).
This class of break is only possible before 1.0.0.
Proposal
Validation
Summary
The public Event Hubs surface embeds
azure-core-amqp, which is unreleased and mid migration from uAMQP to a Rust implementation. Five public headers includeazure/core/amqp/internal/*, the client sources still branch onENABLE_UAMQPandENABLE_RUST_AMQP, and the publicEventDatamodel exposesAmqpMessageandAmqpValue.This workstream settles the transport and insulates the public surface. The first item, the transport decision, is the gate for #7254, because link rebuild and token refresh both land in transport-conditional code. Make that decision first and on its own. The other four items are surface cleanup and do not block the reliability work. Severity tags follow the key in #7252.
Motivation
Event Hubs is the only consumer of
azure-core-amqp, so the AMQP layer is part of the GA surface in practice. That package is at1.0.0-beta.12 (Unreleased). In .NET the transport is fully internal, and the public API listing exposes no transport type (sdk/eventhub/Azure.Messaging.EventHubs/api/Azure.Messaging.EventHubs.netstandard2.0.cs).The C++ client branches on the transport in the send path (
src/producer_client.cpp:95-111), the receiver setup (src/partition_client.cpp:107-177), and client close (src/consumer_client.cpp:56-67). Two transports mean two behavior sets under one version number.Five public headers include
_internalAMQP headers:inc/azure/messaging/eventhubs/consumer_client.hpp:12,producer_client.hpp:11,partition_client.hpp:9,eventhubs_exception.hpp:6, andprocessor.hpp:11. The_internalnamespace carries no stability promise, yet it sits in the GA contract. The publicEventDatamodel also binds theazure-core-amqpmodel types into that contract (inc/azure/messaging/eventhubs/models/event_data.hpp:5-6).This class of break is only possible before
1.0.0.Proposal
ENABLE_UAMQPandENABLE_RUST_AMQPconditional behavior from the shipped client code paths (src/producer_client.cpp:95-111,src/partition_client.cpp:107-177,src/consumer_client.cpp:56-67). [GA blocker]azure/core/amqp/internal/*include from the public headers listed above. Move the AMQP members behind a pimpl or a factory boundary. [GA blocker]EventDatamodel contract: wrapAmqpMessageandAmqpValue, or GA theazure-core-amqpmodel types together with Event Hubs (inc/azure/messaging/eventhubs/models/event_data.hpp:5-6). [GA blocker]azure-core-amqp 1.0.0, or make the library fully internal to the Event Hubs package. [GA blocker]Validation
azure/core/amqp/internal/.