10.6. transformer
transformer 根据路由定义上声明的 Input Type 和/或 输出类型 执行声明性转换。默认 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. 支持的 Transformers 复制链接链接已复制到粘贴板!
| transformer | 描述 |
|---|---|
| 数据格式转换 | 使用数据格式进行转换 |
| 端点转换 | 使用端点转换 |
| 自定义 Transformer | 通过使用自定义转换器类进行转换。 |
10.6.1.3. 常见选项 复制链接链接已复制到粘贴板!
所有转换器都有以下常用选项,可按转换器指定受支持的数据类型:
必须指定 fromType 和 toType 的 方案。
10.6.1.4. DataFormat Transformer 选项 复制链接链接已复制到粘贴板!
| Name | 描述 |
|---|---|
| type | 数据类型 |
| Ref | 引用数据格式 ID |
指定 bindy DataFormat 类型的示例:
Java DSL:
XML DSL:
<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
<bindy id="csvdf" type="Csv" classType="com.example.Order"/>
</dataFormatTransformer>
<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
<bindy id="csvdf" type="Csv" classType="com.example.Order"/>
</dataFormatTransformer>