Class SagaDefinition

All Implemented Interfaces:
org.apache.camel.CamelContextAware, org.apache.camel.LineNumberAware, Block, OutputNode, org.apache.camel.NamedNode, org.apache.camel.spi.HasCamelContext, org.apache.camel.spi.HasId, org.apache.camel.spi.IdAware

@Metadata(label="eip,routing") public class SagaDefinition extends OutputDefinition<SagaDefinition>
Enables Sagas on the route
  • Constructor Details

    • SagaDefinition

      public SagaDefinition()
  • Method Details

    • getOutputs

      public List<ProcessorDefinition<?>> getOutputs()
      Overrides:
      getOutputs in class OutputDefinition<SagaDefinition>
    • setOutputs

      public void setOutputs(List<ProcessorDefinition<?>> outputs)
      Overrides:
      setOutputs in class OutputDefinition<SagaDefinition>
    • isAbstract

      public boolean isAbstract()
      Description copied from class: ProcessorDefinition
      Whether this model is abstract or not.

      An abstract model is something that is used for configuring cross cutting concerns such as error handling, transaction policies, interceptors etc.

      Regular definitions is what is part of the route, such as ToDefinition, WireTapDefinition and the likes.

      Will by default return false to indicate regular definition, so all the abstract definitions must override this method and return true instead.

      This information is used in camel-spring to let Camel work a bit on the model provided by JAXB from the Spring XML file. This is needed to handle those cross cutting concerns properly. The Java DSL does not have this issue as it can work this out directly using the fluent builder methods.

      Overrides:
      isAbstract in class ProcessorDefinition<SagaDefinition>
      Returns:
      true for abstract, otherwise false for regular.
    • isTopLevelOnly

      public boolean isTopLevelOnly()
      Description copied from class: ProcessorDefinition
      Whether this definition can only be added as top-level directly on the route itself (such as onException,onCompletion,intercept, etc.)

      If trying to add a top-level only definition to a nested output would fail in the ProcessorDefinition.addOutput(ProcessorDefinition) method.

      Overrides:
      isTopLevelOnly in class ProcessorDefinition<SagaDefinition>
    • isWrappingEntireOutput

      public boolean isWrappingEntireOutput()
      Description copied from class: ProcessorDefinition
      Whether this definition is wrapping the entire output.

      When a definition is wrapping the entire output, the check to ensure that a route definition is empty should be done on the wrapped output.

      Overrides:
      isWrappingEntireOutput in class ProcessorDefinition<SagaDefinition>
      Returns:
      true when wrapping the entire output.
    • getLabel

      public String getLabel()
      Description copied from class: ProcessorDefinition
      Returns a label to describe this node such as the expression if some kind of expression node
      Specified by:
      getLabel in interface org.apache.camel.NamedNode
      Overrides:
      getLabel in class ProcessorDefinition<SagaDefinition>
    • toString

      public String toString()
      Overrides:
      toString in class OutputDefinition<SagaDefinition>
    • getSagaServiceBean

      public org.apache.camel.saga.CamelSagaService getSagaServiceBean()
    • getSagaService

      public String getSagaService()
    • setSagaService

      public void setSagaService(String sagaService)
      Refers to the id to lookup in the registry for the specific CamelSagaService to use.
    • getCompensation

      public SagaActionUriDefinition getCompensation()
    • setCompensation

      public void setCompensation(SagaActionUriDefinition compensation)
      The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error. If errors occur during compensation, the saga service may call again the compensation URI to retry.
    • getCompletion

      public SagaActionUriDefinition getCompletion()
    • setCompletion

      public void setCompletion(SagaActionUriDefinition completion)
      The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error. If errors occur during completion, the saga service may call again the completion URI to retry.
    • getPropagation

      public String getPropagation()
    • setPropagation

      public void setPropagation(String propagation)
      Set the Saga propagation mode (REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER).
    • getCompletionMode

      public String getCompletionMode()
    • setCompletionMode

      public void setCompletionMode(String completionMode)
      Determine how the saga should be considered complete. When set to AUTO, the saga is completed when the exchange that initiates the saga is processed successfully, or compensated when it completes exceptionally. When set to MANUAL, the user must complete or compensate the saga using the "saga:complete" or "saga:compensate" endpoints.
    • getOptions

      public List<PropertyExpressionDefinition> getOptions()
    • setOptions

      public void setOptions(List<PropertyExpressionDefinition> options)
      Allows to save properties of the current exchange in order to re-use them in a compensation/completion callback route. Options are usually helpful e.g. to store and retrieve identifiers of objects that should be deleted in compensating actions. Option values will be transformed into input headers of the compensation/completion exchange.
    • getTimeout

      public String getTimeout()
    • setTimeout

      public void setTimeout(String timeout)
      Set the maximum amount of time for the Saga. After the timeout is expired, the saga will be compensated automatically (unless a different decision has been taken in the meantime).
    • compensation

      public SagaDefinition compensation(String compensation)
    • completion

      public SagaDefinition completion(String completion)
    • propagation

      public SagaDefinition propagation(SagaPropagation propagation)
    • sagaService

      public SagaDefinition sagaService(org.apache.camel.saga.CamelSagaService sagaService)
    • sagaService

      public SagaDefinition sagaService(String sagaService)
    • completionMode

      public SagaDefinition completionMode(SagaCompletionMode completionMode)
    • completionMode

      public SagaDefinition completionMode(String completionMode)
    • option

      public SagaDefinition option(String option, org.apache.camel.Expression expression)
    • timeout

      public SagaDefinition timeout(Duration duration)
    • timeout

      public SagaDefinition timeout(long timeout, TimeUnit unit)
    • timeout

      public SagaDefinition timeout(String duration)
    • description

      protected String description()