## Sample EIP
*Available as of Camel 2.1*

A sampling throttler allows you to extract a sample of the exchanges from the traffic through a route. +
It is configured with a sampling period during which only a single exchange is allowed to pass through. All other exchanges will be stopped.
Will by default use a sample period of 1 seconds.

### Options
// eip options: START
The Sample EIP supports 3 options which are listed below:


[width="100%",cols="3,1m,6",options="header"]
|=======================================================================
| Name | Java Type | Description
| samplePeriod | Long | Sets the sample period during which only a single Exchange will pass through.
| messageFrequency | Long | Sets the sample message count which only a single Exchange will pass through after this many received.
| units | TimeUnit | Sets the time units for the sample period defaulting to seconds.
|=======================================================================
// eip options: END


### Samples
You use this EIP with the `sample` DSL as show in these samples.

#### Using the Fluent Builders
These samples also show how you can use the different syntax to configure the sampling period:

[source,java]
---------------------
from("direct:sample")
    .sample()
    .to("mock:result");

from("direct:sample-configured")
    .sample(1, TimeUnit.SECONDS)
    .to("mock:result");

from("direct:sample-configured-via-dsl")
    .sample().samplePeriod(1).timeUnits(TimeUnit.SECONDS)
    .to("mock:result");

from("direct:sample-messageFrequency")
    .sample(10)
    .to("mock:result");

from("direct:sample-messageFrequency-via-dsl")
    .sample().sampleMessageFrequency(5)
    .to("mock:result");
---------------------

#### Using the Spring XML Extensions
And the same example in Spring XML is:

[source,xml]
---------------------
<route>
    <from uri="direct:sample"/>
    <sample samplePeriod="1" units="seconds">
        <to uri="mock:result"/>
    </sample>
</route>
<route>
    <from uri="direct:sample-messageFrequency"/>
    <sample messageFrequency="10">
        <to uri="mock:result"/>
    </sample>
</route>
<route>
    <from uri="direct:sample-messageFrequency-via-dsl"/>
    <sample messageFrequency="5">
        <to uri="mock:result"/>
    </sample>
</route>
---------------------

And since it uses a default of 1 second you can omit this configuration in case you also want to use 1 second
[source,xml]
---------------------
<route>
    <from uri="direct:sample"/>
    <!-- will by default use 1 second period -->
    <sample>
        <to uri="mock:result"/>
    </sample>
</route>
---------------------

### Using This Pattern
If you would like to use this EIP Pattern then please read the Getting Started, you may also find the Architecture useful particularly the description of Endpoint and URIs. Then you could try out some of the Examples first before trying this pattern out.

### See Also

* link:./throttle-eip.adoc[Throttler]
* link:/aggregator-eip.adoc[Aggregator]
