第 304 章 简单语言


从 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 开始改进,以使用更好的语法解析器,该解析器可以执行索引精确的错误消息,因此您知道什么错误以及问题在哪里。例如,如果您在其中一个 Operator 中进行了拼写错误,则之前解析器将无法检测到这一点,并导致评估为 true。语法有几个更改,它们不再向后兼容。当使用 简单 语言作为 Predicate 时,必须 用单引号或双引号括起字面文本。例如: "${body} == 'Camel'"。请注意,我们如何使用单引号括起字面上。使用 "body""header.foo" 的旧样式引用邮件正文,标题为 @deprecated,我们鼓励始终将 $\{ } 令牌用于内置功能。range 运算符现在要求范围以单引号括起,如下所示: "${header.zip} between '30000..39999'"。

若要获取消息中的正文:"body "或 " in.body""${body}"

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.