搜索

第 304 章 简单语言

download PDF

从 Camel 版本 1.1 开始提供

Simple Expression Language 是创建时非常简单的语言,但自此已发展为更加强大的语言。它主要用于评估 Expressions 和 Predicates,而无需任何新的依赖项或 XPath 知识;因此,最好在 camel-core 中进行测试。当您需要在 Camel 路由中需要一些基于表达式的基于表达式的脚本时,可以满足 95% 的常见用例。

但是,对于更复杂的用例,您通常建议您选择更加表达和强大的语言,例如:

简单语言对复杂表达式使用 ${body} 占位符,其中表达式包含常量文字。如果表达式只是令牌本身,则可以省略 $\{ } 占位符。

提示

稍后,从 Camel 2.5 的替代语法 也可以使用替代语法,其使用 $simple{ } 作为占位符。这可用于避免在将 Spring 属性占位符与 Camel 搭配使用时发生冲突。

304.1. Camel 2.9 中的简单语言更改

从 Camel 2.9 开始,简单 语言已被改进,以使用更好的语法解析器,该解析器可以进行索引精确的错误消息,以便您准确了解错误以及问题的位置。例如,如果您在其中一个操作器中创建了拼写错误,那么解析程序将无法检测到这一点,并导致评估为 true。语法中有一些更改,不再向后兼容。当使用 简单 语言作为 predicates 时,字面文本 必须 用单引号或双引号括起来。例如: "${body} == 'Camel'"。注意我们如何通过单引号显示字面上的单引号。使用 "body""header.foo" 的旧样式来指代消息正文,标头是 @deprecated,我们建议始终对内置功能使用 $\{ } 令牌。range 运算符现在要求范围以单引号括起,显示: "${header.zip} between '30000..39999'"。

要获得邮件的正文:"body" 或 " in.body""${body}"

复杂的表达式必须使用 $\{ } 占位符,例如 :"Hello ${in.header.name} how are?".

您可以在同一表达式中有多个功能:" Hello ${in.header.name} this is ${in.header.me} talking".
但是,在 Camel 2.8.x 或更早的版本中,您无法嵌套功能(不允许在现有中使用另一个 $\{ } 占位符)。
Camel 2.9 开始,您可以嵌套功能。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.