anchor.diff:    .throttle(100).asyncDelayed()
     .to("seda:b");
   ---------------------
  +
  +And in XML:
  +
  +[source,xml]
  +----
  +<route>
  +  <from uri="seda:a"/>
  +  <throttle timePeriodMillis="100" asyncDelayed="true">
  +    <constant>100</constant>
  +  </throttle>
  +  <to uri="seda:b"/>
  +</route>
  +----
positive.code: include::partial$eip-options.adoc[]
  // eip options: END
  
  == Samples
  
  [source,java]
  ----
  from("seda:a")
    .throttle(3).timePeriodMillis(10000)
    .to("log:result", "mock:result");
  ----
  
  So the above example will throttle messages all messages received on *seda:a* before being sent to *mock:result* ensuring that a maximum of 3 messages are sent in any 10 second window.
  Note that since `timePeriodMillis` defaults to 1000 milliseconds, just setting the `maximumRequestsPerPeriod` has the effect of setting the maximum number of requests per second. So to throttle requests at 100 requests per second between two endpoints, it would look more like this...
  
  [source,java]
  ----
  from("seda:a")
    .throttle(100)
    .to("seda:b");
  ----
  
  For further examples of this pattern in use you could look at the junit test case.
  
  And an example in XML
  [source,xml]
  ----
  <route>
    <from uri="seda:a"/>
    <!-- throttle 3 messages per 10 sec -->
    <throttle timePeriodMillis="10000">
      <constant>3</constant>
    </throttle>
    <to uri="log:result"/>
    <to uri="mock:result"/>
  </route>
  ----
  
  == Dynamically changing maximum requests per period
  
  Since we use an Expression you can adjust this value at runtime, for example you can provide a header with the value. At runtime Camel evaluates the expression and converts the result to a `java.lang.Long` type. In the example below we use a header from the message to determine the maximum requests per period. If the header is absent, then the Throttler uses the old value. So that allows you to only provide a header if the value is to be changed:
  [source,xml]
  ----
  <route>
  
negative.code: :since: 
  :supportlevel: Stable
  
  How can I throttle messages to ensure that a specific endpoint does not get overloaded, or we don’t exceed an agreed SLA with some external service?
  
  image::eip/MessagingAdapterIcon.gif[image]
  
  Use a Throttler that controls the rate how many or fast messages are flowing to the endpoint.
  
  == Options
  
  