10.5. 排序

排序

sort 模式用于对邮件正文的内容进行排序,假设消息正文包含可以排序的项目列表。

默认情况下,消息的内容按照处理数字值或字符串的默认比较器进行排序。您可以提供自己的比较程序,您可以指定一个表达式,返回要排序的列表(表达式必须转换为 java.util.List)。

Java DSL 示例

以下示例生成按换行符字符的令牌排序的项目列表:

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

您可以将自己的比较程序传递给 sort() 的第二个参数:

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>

要使用自定义比较器,您可以将它作为 Springan 来引用:

<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"/>

除了 & lt;simple > 外,您可以使用您喜欢的任何语言提供表达式,只要它返回列表。

选项

sort DSL 命令支持以下选项:

名称

默认值

描述

comparatorRef

 

指的是自定义 java.util.Comparator 用于对消息正文进行排序。Camel 默认将使用执行 A.Z 排序的比较器。