Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Aggregate Example

Available as of Camel 2.3

About

This example demonstrates the new overhauled Aggregator EIP in Apache Camel 2.3. The example is focused on the persistence support, which means the aggregated messages is stored in a persistent file storage using the new HawtDB component.

How to run

You simply run it using the following maven goal: mvn camel:run

How it works

The example is an interactive example where it prompt on the console for you to enter a number and press ENTER. The numbers you enter will then be aggregated and persisted. That means you can at any time hit ctrl + c to shutdown Camel. Then you should be able to start the example again and resume where you left.

When you want to complete the aggregation you can enter STOP as input and Camel will show you the result, which is the sum of all the numbers entered.

The persistent datastore is located in the data/hawtdb.dat file. Its automatic created the first time.

Example

For example we start the example for the first time using mvn camel:run and then we enter the two numbers 5 and 7 before we shutdown using ctrl + c. The relevant console output:

Code Block
[pache.camel.spring.Main.main()] DefaultCamelContext            INFO  Apache Camel 2.3-SNAPSHOT (CamelContext:camel) started
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): 5
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): 7
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): ^C[                      Thread-2] Main$HangupInterceptor         INFO  Received hang up - stopping the main instance.
[                      Thread-2] MainSupport                    INFO  Apache Camel 2.3-SNAPSHOT stopping

Now we start the example again using mvn camel:run and enter the number 3 and then enter STOP to see the result. As expected the result is 5+7+3 = 15 as outputted on the console. As you can see the persistence of the aggregated messages ensures we could continue where we stopped.

Code Block
[pache.camel.spring.Main.main()] DefaultCamelContext            INFO  Apache Camel 2.3-SNAPSHOT (CamelContext:camel) started
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): 3
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): STOP
The result is: 15
Enter a number to be added (use STOP to end, and ctrl c to shutdown Camel): 

Using Aggregator

The example is configured as follows in Spring XML.

Wiki Markup
{snippet:id=e1|lang=xml|url=camel/trunk/examples/camel-example-aggregate/src/main/resources/META-INF/spring/camel-context.xml}

And it has a AggregationStrategy to sum the numbers which is done in Java code as:

Wiki Markup
{snippet:id=e1|lang=java|url=camel/trunk/examples/camel-example-aggregate/src/main/java/org/apache/camel/example/NumberAggregationStrategy.java}

See Also