Class ThrottleDefinition

All Implemented Interfaces:
org.apache.camel.CamelContextAware, org.apache.camel.LineNumberAware, Block, ExecutorServiceAwareDefinition<ThrottleDefinition>, HasExpressionType, 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 ThrottleDefinition extends ExpressionNode implements ExecutorServiceAwareDefinition<ThrottleDefinition>
Controls the rate at which messages are passed to the next node in the route
  • Constructor Details

    • ThrottleDefinition

      public ThrottleDefinition()
    • ThrottleDefinition

      public ThrottleDefinition(org.apache.camel.Expression maximumRequestsPerPeriod)
    • ThrottleDefinition

      public ThrottleDefinition(org.apache.camel.Expression maximumRequestsPerPeriod, org.apache.camel.Expression correlationExpression)
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • description

      protected String description()
    • getShortName

      public String getShortName()
      Specified by:
      getShortName in interface org.apache.camel.NamedNode
    • 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 ExpressionNode
    • timePeriodMillis

      public ThrottleDefinition timePeriodMillis(long timePeriodMillis)
      Sets the time period during which the maximum request count is valid for
      Parameters:
      timePeriodMillis - period in millis
      Returns:
      the builder
    • timePeriodMillis

      public ThrottleDefinition timePeriodMillis(String timePeriodMillis)
      Sets the time period during which the maximum request count is valid for
      Parameters:
      timePeriodMillis - period in millis
      Returns:
      the builder
    • maximumRequestsPerPeriod

      public ThrottleDefinition maximumRequestsPerPeriod(long maximumRequestsPerPeriod)
      Sets the time period during which the maximum request count per period
      Parameters:
      maximumRequestsPerPeriod - the maximum request count number per time period
      Returns:
      the builder
    • maximumRequestsPerPeriod

      public ThrottleDefinition maximumRequestsPerPeriod(String maximumRequestsPerPeriod)
      Sets the time period during which the maximum request count per period
      Parameters:
      maximumRequestsPerPeriod - the maximum request count number per time period
      Returns:
      the builder
    • correlationExpression

      public ThrottleDefinition correlationExpression(long correlationExpression)
      To use a correlation expression that can throttle by the given key instead of overall throttling
      Parameters:
      correlationExpression - is a correlation key as a long number that can throttle by the given key instead of overall throttling
      Returns:
      the builder
    • correlationExpression

      public ThrottleDefinition correlationExpression(org.apache.camel.Expression correlationExpression)
      To use a correlation expression that can throttle by the given key instead of overall throttling
      Parameters:
      correlationExpression - is a correlation key as an expression that can throttle by the given key instead of overall throttling
      Returns:
      the builder
    • callerRunsWhenRejected

      public ThrottleDefinition callerRunsWhenRejected(boolean callerRunsWhenRejected)
      Whether or not the caller should run the task when it was rejected by the thread pool.

      Is by default true

      Parameters:
      callerRunsWhenRejected - whether or not the caller should run
      Returns:
      the builder
    • callerRunsWhenRejected

      public ThrottleDefinition callerRunsWhenRejected(String callerRunsWhenRejected)
      Whether or not the caller should run the task when it was rejected by the thread pool.

      Is by default true

      Parameters:
      callerRunsWhenRejected - whether or not the caller should run
      Returns:
      the builder
    • asyncDelayed

      public ThrottleDefinition asyncDelayed()
      Enables asynchronous delay which means the thread will not block while delaying.
      Returns:
      the builder
    • asyncDelayed

      public ThrottleDefinition asyncDelayed(boolean asyncDelayed)
      Enables asynchronous delay which means the thread will not block while delaying.
      Returns:
      the builder
    • asyncDelayed

      public ThrottleDefinition asyncDelayed(String asyncDelayed)
      Enables asynchronous delay which means the thread will not block while delaying.
      Returns:
      the builder
    • rejectExecution

      public ThrottleDefinition rejectExecution(boolean rejectExecution)
      Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit

      Is by default false

      Parameters:
      rejectExecution - throw the RejectExecutionException if the exchange exceeds the request limit
      Returns:
      the builder
    • rejectExecution

      public ThrottleDefinition rejectExecution(String rejectExecution)
      Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit

      Is by default false

      Parameters:
      rejectExecution - throw the RejectExecutionException if the exchange exceeds the request limit
      Returns:
      the builder
    • executorService

      public ThrottleDefinition executorService(ExecutorService executorService)
      To use a custom thread pool (ScheduledExecutorService) by the throttler.
      Specified by:
      executorService in interface ExecutorServiceAwareDefinition<ThrottleDefinition>
      Parameters:
      executorService - the custom thread pool (must be scheduled)
      Returns:
      the builder
    • executorService

      public ThrottleDefinition executorService(String executorService)
      To use a custom thread pool (ScheduledExecutorService) by the throttler.
      Specified by:
      executorService in interface ExecutorServiceAwareDefinition<ThrottleDefinition>
      Parameters:
      executorService - the reference id of the thread pool (must be scheduled)
      Returns:
      the builder
    • getExecutorServiceBean

      public ExecutorService getExecutorServiceBean()
      Description copied from interface: ExecutorServiceAwareDefinition
      Gets the executor service for executing
      Specified by:
      getExecutorServiceBean in interface ExecutorServiceAwareDefinition<ThrottleDefinition>
    • getExecutorServiceRef

      public String getExecutorServiceRef()
      Description copied from interface: ExecutorServiceAwareDefinition
      Gets a reference id to lookup the executor service from the registry
      Specified by:
      getExecutorServiceRef in interface ExecutorServiceAwareDefinition<ThrottleDefinition>
    • setExpression

      public void setExpression(ExpressionDefinition expression)
      Expression to configure the maximum number of messages to throttle per request
      Overrides:
      setExpression in class ExpressionNode
    • getTimePeriodMillis

      public String getTimePeriodMillis()
    • setTimePeriodMillis

      public void setTimePeriodMillis(String timePeriodMillis)
    • getAsyncDelayed

      public String getAsyncDelayed()
    • setAsyncDelayed

      public void setAsyncDelayed(String asyncDelayed)
    • getCallerRunsWhenRejected

      public String getCallerRunsWhenRejected()
    • setCallerRunsWhenRejected

      public void setCallerRunsWhenRejected(String callerRunsWhenRejected)
    • getRejectExecution

      public String getRejectExecution()
    • setRejectExecution

      public void setRejectExecution(String rejectExecution)
    • setCorrelationExpression

      public void setCorrelationExpression(ExpressionSubElementDefinition correlationExpression)
      The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together.
    • getCorrelationExpression

      public ExpressionSubElementDefinition getCorrelationExpression()
    • getExecutorService

      public String getExecutorService()
    • setExecutorService

      public void setExecutorService(String executorService)