Class PassThroughPropagator
java.lang.Object
io.opentelemetry.api.incubator.propagation.PassThroughPropagator
- All Implemented Interfaces:
TextMapPropagator
A
TextMapPropagator which can be configured with a set of fields, which will be extracted
and stored in Context. If the Context is used again to inject, the values will be
injected as-is. This TextMapPropagator is appropriate for a service that does not need to
participate in telemetry in any way and provides the most efficient way of propagating incoming
context to outgoing requests. In almost all cases, you will configure this single TextMapPropagator when using OpenTelemetry.propagating(ContextPropagators) to create an OpenTelemetry that only propagates. Similarly, you will never need this
when using the OpenTelemetry SDK to enable telemetry.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic TextMapPropagatorReturns aTextMapPropagatorwhich will propagate the givenfieldsfrom extraction to injection.static TextMapPropagatorReturns aTextMapPropagatorwhich will propagate the givenfieldsfrom extraction to injection.<C> Contextextract(Context context, C carrier, TextMapGetter<C> getter) Extracts data from upstream.fields()The propagation fields defined.<C> voidinject(Context context, C carrier, TextMapSetter<C> setter) Injects data for downstream consumers, for example as HTTP headers.toString()
-
Field Details
-
EXTRACTED_KEY_VALUES
-
fields
-
-
Constructor Details
-
PassThroughPropagator
-
-
Method Details
-
create
Returns aTextMapPropagatorwhich will propagate the givenfieldsfrom extraction to injection. -
create
Returns aTextMapPropagatorwhich will propagate the givenfieldsfrom extraction to injection. -
fields
Description copied from interface:TextMapPropagatorThe propagation fields defined. If your carrier is reused, you should delete the fields here before callingTextMapPropagator.inject(Context, Object, TextMapSetter))}.For example, if the carrier is a single-use or immutable request object, you don't need to clear fields as they couldn't have been set before. If it is a mutable, retryable object, successive calls should clear these fields first.
Some use cases for this are:
- Allow pre-allocation of fields, especially in systems like gRPC Metadata
- Allow a single-pass over an iterator
- Specified by:
fieldsin interfaceTextMapPropagator- Returns:
- the fields that will be used by this formatter.
-
inject
Description copied from interface:TextMapPropagatorInjects data for downstream consumers, for example as HTTP headers. The carrier may be null to facilitate calling this method with a lambda for theTextMapSetter, in which case that null will be passed to theTextMapSetterimplementation.- Specified by:
injectin interfaceTextMapPropagator- Type Parameters:
C- carrier of propagation fields, such as an http request- Parameters:
context- theContextcontaining the value to be injected.carrier- holds propagation fields. For example, an outgoing message or http request.setter- invoked for each propagation key to add or remove.
-
extract
Description copied from interface:TextMapPropagatorExtracts data from upstream. For example, from incoming http headers. The returned Context should contain the extracted data, if any, merged with the data from the passed-in Context.If the incoming information could not be parsed, implementations MUST return the original Context, unaltered.
- Specified by:
extractin interfaceTextMapPropagator- Type Parameters:
C- the type of carrier of the propagation fields, such as an http request.- Parameters:
context- theContextused to store the extracted value.carrier- holds propagation fields. For example, an outgoing message or http request.getter- invoked for each propagation key to get data from the carrier.- Returns:
- the
Contextcontaining the extracted data.
-
toString
-