Sample

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

The Sample EIP supports 3 options which are listed below:

Name Description Default Type

samplePeriod

Sets the sample period during which only a single Exchange will pass through.

1s

String

messageFrequency

Sets the sample message count which only a single Exchange will pass through after this many received.

Long

units

Deprecated Sets the time units for the sample period, defaulting to seconds. Deprecation note: Use samplePeriod extended syntax instead

SECONDS

TimeUnit

Samples

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

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

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");

And the same example in Spring XML is:

<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

<route>
    <from uri="direct:sample"/>
    <!-- will by default use 1 second period -->
    <sample>
        <to uri="mock:result"/>
    </sample>
</route>