10.6. transformer
转换器根据路由定义上的声明的输入类型和/或输出类型执行消息声明性转换。
默认 camel 消息实现
DataTypeAware
,其中包含 DataType
表示的消息类型。
10.6.1. Transformer 的工作原理?
路由定义声明 输入类型和
/或 输出类型
。如果输入类型和/或 输出类型
与运行时的消息类型不同,则 camel 内部处理器会查找 Transformer。Transformer 将当前消息类型转换为预期的消息类型。当消息被成功转换后,或者消息已处于预期类型后,则会更新消息数据类型。
10.6.1.1. 数据类型格式
数据类型格式为 scheme:name
,其中 scheme 是 java
、xml
或 json
等数据模型类型,name 是数据类型名称。
如果您只指定 方案,则它会与该方案的所有数据类型匹配。
10.6.1.2. 支持的 Transformer
transformer | 描述 |
---|---|
Data Format Transformer | 使用 Data Format 转换 |
endpoint Transformer | 使用 Endpoint 转换 |
custom Transformer | 使用自定义转换器类转换。 |
10.6.1.3. 常见选项
所有转换器都有以下常用选项,通过转换器指定受支持的数据类型。
必须指定 从Type
和 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>