azure-sdk-for-js
azure-sdk-for-js copied to clipboard
Event Hubs: Client Identifier Support
Summary
When creating one of the Event Hubs client types, it can be useful for a host application to be able to uniquely identify the client instance. The Event Hubs service also supports setting the identifier of an AMQP link, which it will associate with some error messages to make it easier to correlate errors with a given client instance.
The event processor types currently support an informational Identifier, passed in via their respective options at creation time. The remaining Event Hubs clients should be extended to follow this pattern.
Scope of Work
-
The options for each Event Hubs client type should be extended with a string-based
Identifierproperty, defaulting tonullif not supplied by callers. -
The Event Hubs client types should be extended with an
Identifierproperty, mapping to theIdentiferreceived as part of their client options. If the options do not specify an identifier, a unique one should be generated. -
When opening an AMQP link for receiving, the identifier should be added to a link property named
com.microsoft:receiver-nameso that it can be used by the service with error messages. (example) -
When opening an AMQP link for receiving, the identifier should be used as the
Targetin the link settings if doing so us supported by the transport. (example) -
When opening an AMQP link for sending, the identifier should be used as the
Sourcein the link settings if doing so is supported by the transport. (example) -
There should be no change to the logic when opening an AMQP
RequestResponselink for management purposes; the identifier is not supported in this context.
Success Criteria
-
The API changes have been informally reviewed by the language architects and approved.
-
The client options identified in the scope have been enhanced to include an
Identifierproperty. -
The client types identifier in the scope have been enhanced to accept the identifier from the options, expose it via an
Identifierproperty, and make use of it when creating links. -
The tests necessary for ensuring the feature works as intended have been created or adjusted and pass reliably.
-
Existing tests continue to produce deterministic results and pass reliably.
//cc: @chradek