Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Throttler

The Throttler Pattern allows you to ensure that a specific endpoint does not get overloaded, or that we don't exceed an agreed SLA with some external service.

Using the Fluent Builders

Wiki Markup
{snippet:id=ex|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThrottlerTest.java}

So the above example will throttle messages all messages received on queue:a until the JMSTimestamp plus 3 seconds before sending them to mock:result.

You can of course use many different Expression languages such as XPath, XQuery, SQL or various Scripting Languages. You can just delay things a fixed amount of time from the point at which the delayer receives the message. For example to delay things 2 seconds

Code Block

delayer(2000)

The above assume that the delivery order is maintained and that the messages are delivered in delay order. If you want to reorder the messages based on delivery time, you can use the Resequencer with this pattern. For example

Code Block

from("activemq:someQueue").resequencer(header("MyDeliveryTime")).delay("MyRedeliveryTime").to("activemq:aDelayedQueue");

For further examples of this pattern in use you could look at the junit test case

Using the Spring XML Extensions

Include Page
CAMEL:Using This Pattern
CAMEL:Using This Pattern

...