第 16 章 文件语言


摘要

文件语言是简单语言的扩展,而不是自己使用独立语言的扩展。但是,文件语言扩展只能与文件或 FTP 端点一起使用。

16.1. 何时使用文件语言

概述

文件语言是无法始终可用的简单语言的扩展。在以下情况下可以使用它:

注意

文件语言中不可用转义字符 \

在文件或 FTP 使用者端点中

您可以在 File 或 FTP 消费者端点上设置几个 URI 选项,其使用文件语言表达式作为其值。例如,在 File consumer 端点 URI 中,您可以使用文件表达式设置 fileNamemovepreMovemoveFailedsortBy 选项。

在 File consumer 端点中,fileName 选项充当过滤器,确定从起始目录中实际读取哪个文件。如果指定了纯文本字符串(例如 fileName=report.txt),则文件消费者每次更新时都会读取同一文件。但是,您可以通过指定一个简单的表达式来使这个选项更动态。例如,您可以在每次文件消费者轮询起始目录时使用计数器 bean 选择不同的文件,如下所示:

file://target/filelanguage/bean/?fileName=${bean:counter.next}.txt&delete=true

其中 ${bean:counter.next} 表达式调用 ID 下注册的 bean 的 next () 方法,计数器 为。

move 选项用于将文件移动到备份位置,然后由文件消费者端点读取。例如,以下端点在处理后将文件移动到备份目录中:

file://target/filelanguage/?move=backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&recursive=false

其中 ${file:name.noext}.bak 表达式会修改原始文件名,将文件扩展名替换为 .bak

您可以使用 sortBy 选项指定应处理文件的顺序。例如,要根据其文件名的字母顺序处理文件,您可以使用以下文件消费者端点:

file://target/filelanguage/?sortBy=file:name

根据上次修改的顺序处理文件,您可以使用以下文件消费者端点:

file://target/filelanguage/?sortBy=file:modified

您可以通过添加 reverse: prefix iwl-busyboxfor 来撤销顺序:

file://target/filelanguage/?sortBy=reverse:file:modified

在由文件或 FTP 使用者创建的交换上

当交换源自文件或 FTP 消费者端点时,可以将文件语言表达式应用到整个路由的交换(只要原始消息标头不会被清除)。例如,您可以定义一个基于内容的路由器,该路由器根据其文件扩展路由消息,如下所示:

<from uri="file://input/orders"/>
<choice>
  <when>
    <simple>${file:ext} == 'txt'</simple>
    <to uri="bean:orderService?method=handleTextFiles"/>
  </when>
  <when>
    <simple>${file:ext} == 'xml'</simple>
    <to uri="bean:orderService?method=handleXmlFiles"/>
  </when>
  <otherwise>
    <to uri="bean:orderService?method=handleOtherFiles"/>
  </otherwise>
</choice>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.