Interface ExtendedSpanBuilder
- All Superinterfaces:
SpanBuilder
- All Known Implementing Classes:
ExtendedDefaultTracer.NoopSpanBuilder,SdkSpanBuilder
SpanBuilder with experimental APIs.-
Method Summary
Modifier and TypeMethodDescriptionaddLink(SpanContext spanContext) Adds a link to the newly createdSpan.addLink(SpanContext spanContext, Attributes attributes) Adds a link to the newly createdSpan.default ExtendedSpanBuildersetAllAttributes(Attributes attributes) Sets attributes to theSpanBuilder.setAttribute(AttributeKey<T> key, T value) Sets an attribute to the newly createdSpan.setAttribute(String key, boolean value) Sets an attribute to the newly createdSpan.setAttribute(String key, double value) Sets an attribute to the newly createdSpan.setAttribute(String key, long value) Sets an attribute to the newly createdSpan.setAttribute(String key, String value) Sets an attribute to the newly createdSpan.Sets the option to become a rootSpanfor a new trace.Sets the parent to use from the specifiedContext.setParentFrom(ContextPropagators propagators, Map<String, String> carrier) Extract a span context from the given carrier and set it as parent of the span forstartAndCall(SpanCallable)andstartAndRun(SpanRunnable).setSpanKind(SpanKind spanKind) Sets theSpanKindfor the newly createdSpan.setStartTimestamp(long startTimestamp, TimeUnit unit) Sets an explicit start timestamp for the newly createdSpan.default ExtendedSpanBuildersetStartTimestamp(Instant startTimestamp) Sets an explicit start timestamp for the newly createdSpan.<T,E extends Throwable>
TstartAndCall(SpanCallable<T, E> spanCallable) Runs the givenSpanCallableinside of the span created by the givenSpanBuilder.<T,E extends Throwable>
TstartAndCall(SpanCallable<T, E> spanCallable, BiConsumer<Span, Throwable> handleException) Runs the givenSpanCallableinside of the span created by the givenSpanBuilder.<E extends Throwable>
voidstartAndRun(SpanRunnable<E> runnable) Runs the givenSpanRunnableinside of the span created by the givenSpanBuilder.<E extends Throwable>
voidstartAndRun(SpanRunnable<E> runnable, BiConsumer<Span, Throwable> handleException) Runs the givenSpanRunnableinside of the span created by the givenSpanBuilder.Methods inherited from interface io.opentelemetry.api.trace.SpanBuilder
startSpan
-
Method Details
-
setParentFrom
Extract a span context from the given carrier and set it as parent of the span forstartAndCall(SpanCallable)andstartAndRun(SpanRunnable).The span context will be extracted from the
carrier, which you usually get from HTTP headers of the metadata of a message you're processing.- Parameters:
propagators- provide the propagators fromOpenTelemetry.getPropagators()carrier- the string map where to extract the span context from
-
startAndCall
Runs the givenSpanCallableinside of the span created by the givenSpanBuilder. The span will be ended at the end of theSpanCallable.If an exception is thrown by the
SpanCallable, the span will be marked as error, and the exception will be recorded.- Type Parameters:
T- the type of the resultE- the type of the exception- Parameters:
spanCallable- theSpanCallableto call- Returns:
- the result of the
SpanCallable - Throws:
E
-
startAndCall
<T,E extends Throwable> T startAndCall(SpanCallable<T, E> spanCallable, BiConsumer<Span, throws EThrowable> handleException) Runs the givenSpanCallableinside of the span created by the givenSpanBuilder. The span will be ended at the end of theSpanCallable.If an exception is thrown by the
SpanCallable, thehandleExceptionconsumer will be called, giving you the opportunity to handle the exception and span in a custom way, e.g. not marking the span as error.- Type Parameters:
T- the type of the resultE- the type of the exception- Parameters:
spanCallable- theSpanCallableto callhandleException- the consumer to call when an exception is thrown- Returns:
- the result of the
SpanCallable - Throws:
E
-
startAndRun
Runs the givenSpanRunnableinside of the span created by the givenSpanBuilder. The span will be ended at the end of theSpanRunnable.If an exception is thrown by the
SpanRunnable, the span will be marked as error, and the exception will be recorded.- Type Parameters:
E- the type of the exception- Parameters:
runnable- theSpanRunnableto run- Throws:
E
-
startAndRun
<E extends Throwable> void startAndRun(SpanRunnable<E> runnable, BiConsumer<Span, Throwable> handleException) throws ERuns the givenSpanRunnableinside of the span created by the givenSpanBuilder. The span will be ended at the end of theSpanRunnable.If an exception is thrown by the
SpanRunnable, thehandleExceptionconsumer will be called, giving you the opportunity to handle the exception and span in a custom way, e.g. not marking the span as error.- Type Parameters:
E- the type of the exception- Parameters:
runnable- theSpanRunnableto run- Throws:
E
-
setParent
Sets the parent to use from the specifiedContext. If not set, the value ofSpan.current()atSpanBuilder.startSpan()time will be used as parent.If no
Spanis available in the specifiedContext, the resultingSpanwill become a root instance, as ifSpanBuilder.setNoParent()had been called.If called multiple times, only the last specified value will be used. Observe that the state defined by a previous call to
SpanBuilder.setNoParent()will be discarded.- Specified by:
setParentin interfaceSpanBuilder- Parameters:
context- theContext.- Returns:
- this.
-
setNoParent
ExtendedSpanBuilder setNoParent()Sets the option to become a rootSpanfor a new trace. If not set, the value ofSpan.current()atSpanBuilder.startSpan()time will be used as parent.Observe that any previously set parent will be discarded.
- Specified by:
setNoParentin interfaceSpanBuilder- Returns:
- this.
-
addLink
Adds a link to the newly createdSpan.Links are used to link
Spans in different traces. Used (for example) in batching operations, where a single batch handler processes multiple requests from different traces or the same trace.Implementations may ignore calls with an invalid span context.
- Specified by:
addLinkin interfaceSpanBuilder- Parameters:
spanContext- the context of the linkedSpan.- Returns:
- this.
-
addLink
Adds a link to the newly createdSpan.Links are used to link
Spans in different traces. Used (for example) in batching operations, where a single batch handler processes multiple requests from different traces or the same trace.Implementations may ignore calls with an invalid span context.
- Specified by:
addLinkin interfaceSpanBuilder- Parameters:
spanContext- the context of the linkedSpan.attributes- the attributes of theLink.- Returns:
- this.
-
setAttribute
Sets an attribute to the newly createdSpan. IfSpanBuilderpreviously contained a mapping for the key, the old value is replaced by the specified value.If a null or empty String
valueis passed in, the behavior is undefined, and hence strongly discouraged.Note: It is strongly recommended to use
SpanBuilder.setAttribute(AttributeKey, Object), and pre-allocate your keys, if possible.- Specified by:
setAttributein interfaceSpanBuilder- Parameters:
key- the key for this attribute.value- the value for this attribute.- Returns:
- this.
-
setAttribute
Sets an attribute to the newly createdSpan. IfSpanBuilderpreviously contained a mapping for the key, the old value is replaced by the specified value.Note: It is strongly recommended to use
SpanBuilder.setAttribute(AttributeKey, Object), and pre-allocate your keys, if possible.- Specified by:
setAttributein interfaceSpanBuilder- Parameters:
key- the key for this attribute.value- the value for this attribute.- Returns:
- this.
-
setAttribute
Sets an attribute to the newly createdSpan. IfSpanBuilderpreviously contained a mapping for the key, the old value is replaced by the specified value.Note: It is strongly recommended to use
SpanBuilder.setAttribute(AttributeKey, Object), and pre-allocate your keys, if possible.- Specified by:
setAttributein interfaceSpanBuilder- Parameters:
key- the key for this attribute.value- the value for this attribute.- Returns:
- this.
-
setAttribute
Sets an attribute to the newly createdSpan. IfSpanBuilderpreviously contained a mapping for the key, the old value is replaced by the specified value.Note: It is strongly recommended to use
SpanBuilder.setAttribute(AttributeKey, Object), and pre-allocate your keys, if possible.- Specified by:
setAttributein interfaceSpanBuilder- Parameters:
key- the key for this attribute.value- the value for this attribute.- Returns:
- this.
-
setAttribute
Sets an attribute to the newly createdSpan. IfSpanBuilderpreviously contained a mapping for the key, the old value is replaced by the specified value.Note: the behavior of null values is undefined, and hence strongly discouraged.
- Specified by:
setAttributein interfaceSpanBuilder- Parameters:
key- the key for this attribute.value- the value for this attribute.- Returns:
- this.
-
setAllAttributes
Sets attributes to theSpanBuilder. If theSpanBuilderpreviously contained a mapping for any of the keys, the old values are replaced by the specified values.- Specified by:
setAllAttributesin interfaceSpanBuilder- Parameters:
attributes- the attributes- Returns:
- this.
-
setSpanKind
Sets theSpanKindfor the newly createdSpan. If not called, the implementation will provide a default valueSpanKind.INTERNAL.- Specified by:
setSpanKindin interfaceSpanBuilder- Parameters:
spanKind- the kind of the newly createdSpan.- Returns:
- this.
-
setStartTimestamp
Sets an explicit start timestamp for the newly createdSpan.LIRInstruction.Use this method to specify an explicit start timestamp. If not called, the implementation will use the timestamp value at
SpanBuilder.startSpan()time, which should be the default case.Important this is NOT equivalent with System.nanoTime().
- Specified by:
setStartTimestampin interfaceSpanBuilder- Parameters:
startTimestamp- the explicit start timestamp from the epoch of the newly createdSpan.unit- the unit of the timestamp.- Returns:
- this.
-
setStartTimestamp
Sets an explicit start timestamp for the newly createdSpan.Use this method to specify an explicit start timestamp. If not called, the implementation will use the timestamp value at
SpanBuilder.startSpan()time, which should be the default case.Important this is NOT equivalent with System.nanoTime().
- Specified by:
setStartTimestampin interfaceSpanBuilder- Parameters:
startTimestamp- the explicit start timestamp from the epoch of the newly createdSpan.- Returns:
- this.
-