第 146 章 YAML DSL
自 Camel 3.9 起
YAML DSL 提供了在 YAML 中定义 Camel 路由、路由模板和 REST DSL 配置的功能。
146.1. 定义路由
路由是定义的元素集合,如下所示:
- from: 1 uri: "direct:start" steps: 2 - filter: expression: simple: "${in.header.continue} == true" steps: - to: uri: "log:filtered" - to: uri: "log:original"
其中,
每个步骤都代表了一个 YAML 映射,其中有一个条目,其中字段名称是 EIP 名称。
作为常规规则,每个步骤都提供相关定义声明的所有参数,但有一些细微的区别/隔离:
- output Aware 步骤
当交换与过滤器表达式或 分割
生成的项目匹配时,一些步骤(如 filter
和 split )具有自己的管道。您可以在 steps
字段中定义这些管道:
filter: expression: simple: "${in.header.continue} == true" steps: - to: uri: "log:filtered"
- 表达式 Aware 步骤
有些 EIP (如 filter
和 split
)支持通过 expression 字段定义 表达式
:
显式 Expression 字段
filter: expression: simple: "${in.header.continue} == true"
要使 DSL 不太详细,您可以省略 expression
字段。
隐式 Expression 字段
filter: simple: "${in.header.continue} == true"
通常,表达式可以定义内联,例如在上述示例中,但如果您需要提供更多信息,您可以"滚动"表达式定义并配置表达式定义的任何单个参数。
完整的表达式定义
filter: tokenize: token: "<" end-token: ">"
- 数据格式感知步骤
EIP marshal
和 unmarshal
支持定义数据格式:
marshal: json: library: Gson
如果要使用 data-format 的默认设置,则需要将空块作为数据格式参数设置为数据格式参数,如 json: {}