10.6. transformer

转换器根据路由定义上的声明的输入类型和/或输出类型执行消息声明性转换。 默认 camel 消息实现 DataTypeAware,其中包含 DataType 表示的消息类型。

10.6.1. Transformer 的工作原理?

路由定义声明 输入类型和 /或 输出类型。如果输入类型和/或 输出类型 与运行时的消息类型不同,则 camel 内部处理器会查找 Transformer。Transformer 将当前消息类型转换为预期的消息类型。当消息被成功转换后,或者消息已处于预期类型后,则会更新消息数据类型。

10.6.1.1. 数据类型格式

数据类型格式为 scheme:name,其中 schemejavaxmljson 等数据模型类型,name 是数据类型名称。

注意

如果您只指定 方案,则它会与该方案的所有数据类型匹配。

10.6.1.2. 支持的 Transformer

transformer描述

Data Format Transformer

使用 Data Format 转换

endpoint Transformer

使用 Endpoint 转换

custom Transformer

使用自定义转换器类转换。

10.6.1.3. 常见选项

所有转换器都有以下常用选项,通过转换器指定受支持的数据类型。

重要

必须指定 从TypetoType方案

名称描述

scheme

xmljson 等数据模型类型。例如,如果指定了 xml,则转换程序将适用于所有 java -> xml 和 xml -> java 转换。

fromType

从中 转换的数据类型。

toType

转换为的数据类型。

10.6.1.4. DataFormat Transformer 选项

名称描述

type

数据格式类型

ref

引用数据格式 ID

指定 bindy DataFormat 类型的示例:

Java DSL:

BindyDataFormat bindy = new BindyDataFormat();
bindy.setType(BindyType.Csv);
bindy.setClassType(com.example.Order.class);
transformer()
    .fromType(com.example.Order.class)
    .toType("csv:CSVOrder")
    .withDataFormat(bindy);

XML DSL:

<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
    <bindy id="csvdf" type="Csv" classType="com.example.Order"/>
</dataFormatTransformer>