Integration / Apache Camel Interview Questions
How does the Throttler EIP work in Camel?
The Throttler limits the rate at which messages are forwarded to a downstream endpoint. It ensures the consumer does not receive more than N messages per time period, protecting rate-limited APIs and preventing downstream overload.
// Allow at most 10 messages per second:
from("jms:queue:events")
.throttle(10).timePeriodMillis(1000)
.to("http://api.example.com/event");
// Dynamic rate from a header (expressions supported):
from("direct:in")
.throttle(header("maxRate")).timePeriodMillis(1000)
.to("direct:downstream");
// Async throttle: do not block the calling thread:
from("direct:bulk")
.throttle(50).timePeriodMillis(1000).asyncDelayed()
.to("direct:target");Excess messages are delayed, not dropped — they are queued internally until the rate window opens. By default, the throttler uses a synchronized counter. Use asyncDelayed() to release the calling thread while the delayed Exchange waits; this is important for high-throughput scenarios to avoid thread starvation. The rate can be set dynamically per-Exchange using an expression.
More Related questions...