Versions Compared

Key

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

Sort

Sort can be used to sort a message. Imagine you consume text files and before processing each file you want to be sure the content is sorted.

Sort will by default sort the body using a default comparator that handles numeric values or uses the string representation. You can provide your own comparator, and even an expression to return the value to be sorted.

Using from Java DSL

In the route below it will read the file content and tokenize by line breaks so each line can be sorted.

Code Block

from("file://inbox").sort(body().tokenize("\n")).to("bean:MyServiceBean.processLine");

You can pass in your own comparator as a 2nd argument:

Code Block

from("file://inbox").sort(body().tokenize("\n"), new MyReverseComparator()).to("bean:MyServiceBean.processLine");

Using from Spring DSL

In the route below it will read the file content and tokenize by line breaks so each line can be sorted.

Code Block
xml
xml

<route>
  <from uri="file://inbox"/>
  <sort>
    <tokenizer token="\n"/>
  </sort>
  <beanRef ref="myServiceBean" method="processLine"/>
</route>

And to use our own comparator we can refer to it as a spring bean:

Code Block
xml
xml

<route>
  <from uri="file://inbox"/>
  <sort comparatorRef="myReverseComparator">
    <tokenizer token="\n"/>
  </sort>
  <beanRef ref="MyServiceBean" method="processLine"/>
</route>

<bean id="myReverseComparator" class="com.mycompany.MyReverseComparator"/>

Using this pattern

TODO