35.4. ExchangeHelper 类
概述
org.apache.camel.util.ExchangeHelper
类是一种 Apache Camel 实用程序类,提供实施处理器时有用的方法。
解析端点
静态 resolveEndpoint ()
方法是 ExchangeHelper
类中最有用的方法之一。您可以在处理器中使用它来即时创建新的 Endpoint
实例。
例 35.6. resolveEndpoint ()
方法
public final class ExchangeHelper { ... @SuppressWarnings({"unchecked" }) public static Endpoint resolveEndpoint(Exchange exchange, Object value) throws NoSuchEndpointException { ... } ... }
resolveEndpoint ()
的第一个参数是一个交换实例,第二个参数通常是端点 URI 字符串。例 35.7 “创建文件端点” 演示了如何从交换实例 交换
创建新文件端点
例 35.7. 创建文件端点
Endpoint file_endp = ExchangeHelper.resolveEndpoint(exchange, "file://tmp/messages/in.xml");
嵌套交换访问器
ExchangeHelper
类提供了一些静态方法 getMandatoryBeanProperty(),它将在
Exchange
类上包装对应的 getBeanProperty()
方法。它们之间的区别在于,如果对应的属性不可用,原始 getBeanProperty()
访问器会返回 null
,而 getMandatoryBeanProperty()
包装器方法会抛出 Java 异常。以下 wrapper 方法在 ExchangeHelper
类中实施:
public final class ExchangeHelper { ... public static <T> T getMandatoryProperty(Exchange exchange, String propertyName, Class<T> type) throws NoSuchPropertyException { ... } public static <T> T getMandatoryHeader(Exchange exchange, String propertyName, Class<T> type) throws NoSuchHeaderException { ... } public static Object getMandatoryInBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryInBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } public static Object getMandatoryOutBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryOutBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } ... }
测试交换模式
几种不同的交换模式与保留 In 消息兼容。几种不同的交换模式也与 保存 Out 消息兼容。为了快速检查交换对象是否可以保存 In 消息或 Out 消息,ExchangeHelper
类提供了以下方法:
public final class ExchangeHelper { ... public static boolean isInCapable(Exchange exchange) { ... } public static boolean isOutCapable(Exchange exchange) { ... } ... }
获取 In 消息 MIME 内容类型
如果要查找交换的 In 消息的 MIME 内容类型,您可以通过调用 ExchangeHelper.getContentType (exchange)
方法来访问它。要实现此目的,ExchangeHelper
对象查找 In message's Content-Type
header to the method 依赖于底层组件来填充标头值的值。