Class NestingSpanFactory

java.lang.Object
org.axonframework.tracing.NestingSpanFactory
All Implemented Interfaces:
SpanFactory

@Deprecated public class NestingSpanFactory extends Object implements SpanFactory
Deprecated.
Various components have dedicated tracing SpanFactory interfaces since 4.9.0. This includes the CommandBus, EventProcessor and QueryBus. Use the distributedInSameTrace of these instead.
Implementation of SpanFactory that wraps another factory and creates nested spans when handling messages instead of starting a new trace. This is true for all messages, such as events, commands, deadlines and queries.

For events and deadlines specifically, this factory includes a time limit (by default 2 minutes, but is configurable on the builder). After that time limit, handling these message types will become a separate trace. The time limit prevents handling of events from being added to the original trace after a longer period of time, such as when replaying an event processor.

Since:
4.7.0
Author:
Mitchell Herrijgers
  • Constructor Details

  • Method Details

    • builder

      public static NestingSpanFactory.Builder builder()
      Deprecated.
      Creates a new NestingSpanFactory.Builder that can build a NestingSpanFactory.

      Requires the delegate SpanFactory to be configured.

      The Clock defaults to the system utc time and the timeLimit Duration defaults to two minutes.

      Returns:
      The NestingSpanFactory.Builder in charge of creating a NestingSpanFactory.
    • createRootTrace

      public Span createRootTrace(Supplier<String> operationNameSupplier)
      Deprecated.
      Description copied from interface: SpanFactory
      Creates a new Span without any parent trace. This should be used for logical start point of asynchronous calls that are not related to a message. For example snapshotting an aggregate.

      In monitoring systems, this Span will be the root of the trace.

      Specified by:
      createRootTrace in interface SpanFactory
      Parameters:
      operationNameSupplier - Supplier of the operation's name.
      Returns:
      The created Span.
    • createHandlerSpan

      public Span createHandlerSpan(Supplier<String> operationNameSupplier, Message<?> parentMessage, boolean isChildTrace, Message<?>... linkedParents)
      Deprecated.
      Description copied from interface: SpanFactory
      Creates a new Span linked to asynchronously handling a Message, for example when handling a command from Axon Server. The message attributes will be added to the span, based on the provided SpanAttributesProviders for additional debug information.

      In monitoring systems, this Span will be the root of the trace.

      The message's name will be concatenated with the operationName, see SpanUtils.determineMessageName(Message).

      Specified by:
      createHandlerSpan in interface SpanFactory
      Parameters:
      operationNameSupplier - Supplier of the operation's name.
      parentMessage - The message that is being handled.
      isChildTrace - Whether to force the span to be a part of the current trace. This means not linking, but setting a parent.
      linkedParents - Optional parameter, providing this will link the provided message(s) to the current, in addition to the original.
      Returns:
      The created Span.
    • createDispatchSpan

      public Span createDispatchSpan(Supplier<String> operationNameSupplier, Message<?> parentMessage, Message<?>... linkedSiblings)
      Deprecated.
      Description copied from interface: SpanFactory
      Creates a new Span linked to dispatching a Message, for example when sending a command to Axon Server. The message attributes will be added to the span, based on the provided SpanAttributesProviders for additional debug information.

      In monitoring systems, this Span will be part of another trace.

      Before asynchronously dispatching a message, add the tracing context to the message, using SpanFactory.propagateContext(Message) to the message's metadata.

      The message's name will be concatenated with the operationName, see SpanUtils.determineMessageName(Message).

      Specified by:
      createDispatchSpan in interface SpanFactory
      Parameters:
      operationNameSupplier - Supplier of the operation's name.
      parentMessage - The message that is being handled.
      linkedSiblings - Optional parameter, providing this will link the provided messages to the current.
      Returns:
      The created Span.
    • createInternalSpan

      public Span createInternalSpan(Supplier<String> operationNameSupplier)
      Deprecated.
      Description copied from interface: SpanFactory
      Creates a new Span linked to the currently active span. This is useful for tracing different parts of framework logic, so we can time what has the most impact.

      In monitoring systems, this Span will be part of another trace.

      Specified by:
      createInternalSpan in interface SpanFactory
      Parameters:
      operationNameSupplier - Supplier of the operation's name.
      Returns:
      The created Span.
    • createInternalSpan

      public Span createInternalSpan(Supplier<String> operationNameSupplier, Message<?> message)
      Deprecated.
      Description copied from interface: SpanFactory
      Creates a new Span linked to the currently active span. This is useful for tracing different parts of framework logic, so we can time what has the most impact.

      The message supplied is used to provide a clearer name, based on SpanUtils.determineMessageName(Message), and to add the message's attributes to the span.

      In monitoring systems, this Span will be part of another trace.

      Specified by:
      createInternalSpan in interface SpanFactory
      Parameters:
      operationNameSupplier - Supplier of the operation's name.
      Returns:
      The created Span.
    • registerSpanAttributeProvider

      public void registerSpanAttributeProvider(SpanAttributesProvider provider)
      Deprecated.
      Description copied from interface: SpanFactory
      Registers an additional SpanAttributesProvider to the factory.
      Specified by:
      registerSpanAttributeProvider in interface SpanFactory
      Parameters:
      provider - The provider to add.
    • propagateContext

      public <M extends Message<?>> M propagateContext(M message)
      Deprecated.
      Description copied from interface: SpanFactory
      Propagates the currently active trace and span to the message. It should do so in a way that the context can be retrieved by the SpanFactory.createLinkedHandlerSpan(Supplier, Message, Message[]) method. The most efficient method currently known is to enhance the message's metadata.

      Since messages are immutable, the method returns the enhanced message. This enhanced message should be used during dispatch instead of the original message.

      Specified by:
      propagateContext in interface SpanFactory
      Type Parameters:
      M - The message's type.
      Parameters:
      message - The message to enhance.
      Returns:
      The enhanced message.