2.6. 转换消息内容
摘要
Apache Camel 支持多种方法来转换消息内容。除了用于修改消息内容的简单原生 API 外,Apache Camel 支持与几个不同的第三方库和转换标准集成。
2.6.1. 简单消息转换
概述
Java DSL 具有一个内置 API,允许您在传入和传出消息上执行简单的转换。例如,例 2.1 “引入消息的简单转换” 中显示的规则会将文本 World!
附加到传入消息正文的末尾。
例 2.1. 引入消息的简单转换
from("SourceURL").setBody(body().append(" World!")).to("TargetURL");
其中 setBody()
命令取代了传入邮件正文的内容。
用于简单转换的 API
您可以使用以下 API 类在路由器规则中执行消息内容的简单转换:
-
org.apache.camel.model.ProcessorDefinition
-
org.apache.camel.builder.Builder
-
org.apache.camel.builder.ValueBuilder
ProcessorDefinition class
org.apache.camel.model.ProcessorDefinition
类定义 DSL 命令,您可以在 例 2.1 “引入消息的简单转换” 中直接插入路由器 rule>_<-targetNamespaces 例如: 中的 setBody()
命令。表 2.5 “从处理器Definition 类转换方法” 显示与转换消息内容相关的 ProcessorDefinition
方法:
表 2.5. 从处理器Definition 类转换方法
方法 | 描述 |
---|---|
| 将 IN 消息正文转换为指定的类型。 |
| 添加处理器,以删除 FAULT 消息上的标头。 |
| 添加可移除 IN 消息上的标头的处理器。 |
| 添加可移除交换属性的处理器。 |
| 添加在 IN 消息上设置正文的处理器。 |
| 添加在 FAULT 消息上设置正文的处理器。 |
| 添加在 FAULT 消息上设置标头的处理器。 |
| 添加在 IN 消息上设置标头的处理器。 |
| 添加在 IN 消息上设置标头的处理器。 |
| 添加在 OUT 消息上设置标头的处理器。 |
| 添加在 OUT 消息上设置标头的处理器。 |
| 添加可设置 Exchange 属性的处理器。 |
| 添加可设置 Exchange 属性的处理器。 |
| 添加在 OUT 消息上设置正文的处理器。 |
| 添加在 OUT 消息上设置正文的处理器。 |
builder 类
org.apache.camel.builder.Builder
类提供对预期表达式或 predicates 的上下文中的消息内容的访问。换句话说,在 DSL 命令的参数 中通常会调用 Builder
方法。例如,例 2.1 “引入消息的简单转换” 中的 body()
命令。表 2.6 “Builder 类中的方法” 总结 Builder
类中的静态方法。
表 2.6. Builder 类中的方法
方法 | 描述 |
---|---|
| 为交换上的入站正文返回 predicate 和 value builder。 |
| 为入站邮件正文返回 predicate 和 value builder,作为特定类型的值。 |
| 返回恒定表达式。 |
| 为交换上的错误正文返回 predicate 和 value builder。 |
| 为错误消息正文返回 predicate 和 value builder,作为特定类型的值。 |
| 为交换上的标头返回 predicate 和 value builder。 |
| 为交换上的出站正文返回 predicate 和 value builder。 |
| 为出站邮件正文返回 predicate 和 value builder,作为特定类型的特定类型。 |
| 为交换的属性返回 predicate 和 value builder。 |
| 返回表达式将所有出现正则表达式的表达式替换为给定的替换。 |
| 返回表达式将所有出现正则表达式的表达式替换为给定的替换。 |
| 返回将交换发送到给定端点 uri 的表达式。 |
| 返回给定系统属性的表达式。 |
| 返回给定系统属性的表达式。 |
ValueBuilder 类
org.apache.camel.builder.ValueBuilder
类允许您修改 Builder
方法返回的值。换句话说,ValueBuilder
中的方法提供了一个简单的修改消息内容的方法。表 2.7 “ValueBuilder 类的修饰符方法” 总结了 ValueBuilder
类中可用的方法。也就是说,该表只显示用于修改在其所调用的值的方法(查看完整详情,请参阅 API 参考文档 )。
表 2.7. ValueBuilder 类的修饰符方法
方法 | 描述 |
---|---|
| 使用所给值附加此表达式的字符串评估。 |
| 创建一个 predicate,使左手表达式包含右手表达式的值。 |
| 使用已注册类型转换器将当前值转换为给定类型。 |
| 使用注册的类型转换器转换当前值 String。 |
| |
| |
| |
| |
|
返回 true,如果当前值等于给定 |
|
返回 true,如果当前值大于给定 |
|
返回 true,如果当前值大于或等于给定 |
| 返回为 true,如果当前值是给定类型的实例。 |
|
返回为 true,如果当前值小于给定 |
|
返回为 true,如果当前值小于或等于给定 |
|
返回 true,如果当前值不等于给定 |
|
返回 true,如果当前值不是 |
|
返回 true,如果当前值是 |
| |
| 导航 predicate 参数。 |
| 将这个表达式的字符串评估添加到所给值。 |
| |
| 将正则表达式的所有发生情况替换为给定的替换。 |
| 将正则表达式的所有发生情况替换为给定的替换。 |
| 使用给定的正则表达式对这个表达式的字符串转换进行令牌。 |
| 使用给定比较器对当前值进行排序。 |
|
返回 true,如果当前值与 |
| 使用逗号令牌分隔符标记此表达式的字符串转换。 |
| 使用给定令牌分隔符对这个表达式的字符串转换进行令牌转换。 |