Sample
A sampling throttler allows you to extract a sample of the exchanges from the traffic through a route.
The Sample EIP works similar to a wire tap, but instead of tapping every message, the sampling will select a single message in a given time period. This selected message is allowed to pass through, and all other messages are stopped.
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. | 1000 | String |
messageFrequency | Sets the sample message count which only a single Exchange will pass through after this many received. | Long | |
disabled | Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime. | false | Boolean |
description | Sets the description of this node. | DescriptionDefinition |
Using Sample EIP
In the example below we sample one message per second (default time period):
from("direct:sample")
.sample()
.to("direct:sampled");
And in XML
<route>
<from uri="direct:sample"/>
<sample>
<to uri="direct:sampled"/>
</sample>
</route>
Sampling using time period
The default time period is 1 second, but this can easily be configured. For example to sample 1 message per 5 seconds you can do:
from("direct:sample")
.sample(5, TimeUnit.SECONDS)
.to("direct:sampled");
And in XML
<route>
<from uri="direct:sample"/>
<sample samplePeriod="5000">
<to uri="direct:sampled"/>
</sample>
</route>
Sampling using message frequency
The Sample EIP can also be configured to sample based on frequency instead of time period.
For example to sample every 10th message you can do:
from("direct:sample")
.sample(10)
.to("direct:sampled");
And in XML
<route>
<from uri="direct:sample"/>
<sample messageFrequency="10">
<to uri="direct:sampled"/>
</sample>
</route>