35.4. ExchangeHelper Class


概述

org.apache.camel.util.ExchangeHelper 类是一个 Apache Camel 实用程序类,提供在实施处理器时有用的方法。

解析端点

静态 resolveEndpoint () 方法是 ExchangeHelper 类中最有用的方法之一。您可以在处理器内使用它实时创建新的 端点 实例。

例 35.6. resolveEndpoint () 方法

public final class ExchangeHelper {
    ...
    @SuppressWarnings({"unchecked" })
    public static Endpoint
    resolveEndpoint(Exchange exchange, Object value)
        throws NoSuchEndpointException { ... }
    ...
}

解析Endpoint () 的第一个参数是一个交换实例,第二个参数通常是端点 URI 字符串。例 35.7 “创建文件端点” 显示如何从交换实例 交换创建新文件端点

例 35.7. 创建文件端点

Endpoint file_endp = ExchangeHelper.resolveEndpoint(exchange, "file://tmp/messages/in.xml");

嵌套交换访问器

ExchangeHelper 类提供多种形式的静态方法 getMandatoryBeanProperty(), 它封装了 Exchange 类上对应的 getBeanProperty() 方法。它们的区别在于,如果对应的属性不可用,则原始 getBeanProperty() 访问器返回 null,而 getMandatoryBeanProperty() 打包程序方法会抛出 Java 异常。以下打包程序方法在 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 message 或 Out 信息,ExchangeHelper 类提供了以下方法:

public final class ExchangeHelper {
    ...
    public static boolean isInCapable(Exchange exchange) { ... }

    public static boolean isOutCapable(Exchange exchange) { ... }
    ...
}

获取 In message 的 MIME 内容类型

如果要找出交换的 MIME 内容类型,可以通过调用 ExchangeHelper.getContentType (exchange) 方法来访问它。要实现此目的,ExchangeHelper 对象会查找 In message 的 Content-Type 标头的所有流量。此方法依赖于底层组件来填充标头值。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.