10.5. 並び替え

Sort

Sort パターンは、メッセージのボディーにソートできる項目の一覧が含まれていることを前提として、メッセージのボディーの内容をソートするために使用します。

デフォルトでは、メッセージのコンテンツは、数値または文字列を処理するデフォルトのコンパレーターを使用してソートされます。独自のコンパレーターを提供でき、ソートするリストを返す式を指定できます (式は java.util.List に変換可能である必要があります)。

Java DSL の例

以下の例では、改行文字でトークン化してソートする項目のリストを生成します。

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

sort() に 2 番目の引数として独自のコンパレーターを渡すことができます。

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

XML 設定の例

Spring XML でも同じルートを設定することができます。

以下の例では、改行文字でトークン化してソートする項目のリストを生成します。

<route>
  <from uri="file://inbox"/>
  <sort>
    <simple>body</simple>
  </sort>
  <beanRef ref="myServiceBean" method="processLine"/>
</route>

また、カスタムコンパレーターを使用するには、これを Spring Bean として参照できます。

<route>
  <from uri="file://inbox"/>
  <sort comparatorRef="myReverseComparator">
    <simple>body</simple>
  </sort>
  <beanRef ref="MyServiceBean" method="processLine"/>
</route>

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

<simple> の他にも、任意の言語を使用してリストを返す式を指定することもできます。

オプション

sort DSL コマンドは以下のオプションをサポートします。

名前

デフォルト値

説明

comparatorRef

 

メッセージボディーのソートに使用するカスタムの java.util.Comparator を参照します。Camel はデフォルトで、A から Z のソートを行うコンパレーターを使用します。