10.5. 排序
排序
sort 模式用于对邮件正文的内容进行排序,假设消息正文包含可排序的项列表。
默认情况下,消息的内容使用处理数字值或字符串的默认比较器进行排序。您可以提供自己的比较器,您可以指定一个表达式,可返回要排序的列表(表达式必须可以被转换至 java.util.List
)。
Java DSL 示例
以下示例生成项目列表,按令牌在行 break 字符中排序:
from("file://inbox").sort(body().tokenize("\n")).to("bean:MyServiceBean.processLine");
from("file://inbox").sort(body().tokenize("\n")).to("bean:MyServiceBean.processLine");
您可以将自己的比较器作为 sort ()传递至 sort ()
:
from("file://inbox").sort(body().tokenize("\n"), new MyReverseComparator()).to("bean:MyServiceBean.processLine");
from("file://inbox").sort(body().tokenize("\n"), new MyReverseComparator()).to("bean:MyServiceBean.processLine");
XML 配置示例
您可以在 Spring XML 中配置相同的路由。
以下示例生成项目列表,按令牌在行 break 字符中排序:
<route> <from uri="file://inbox"/> <sort> <simple>body</simple> </sort> <beanRef ref="myServiceBean" method="processLine"/> </route>
<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"/>
<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 命令支持以下选项:
名称 | 默认值 | 描述 |
|
指的是用于排序消息正文的自定义 |