第 40 章 端点接口


摘要

本章论述了如何实现 Endpoint 接口,这是 Apache Camel 组件实施中的基本步骤。

40.1. 端点接口

概述

一个 org.apache.camel.Endpoint 类型的实例封装端点 URI,它也充当 Consumer,Producer, 和 Exchange 对象的工厂。实施端点的方法有三种:

  • 事件驱动的
  • 调度的轮询
  • polling

这些端点实现模式补充了实施 consumer iwl- iwlsee 第 41.2 节 “实施 Consumer 接口” 的对应模式。

图 40.1 “端点继承层次结构” 显示组成 Endpoint 继承层次结构的相关 Java 接口和类。

图 40.1. 端点继承层次结构

端点继承层次结构

Endpoint 接口

例 40.1 “端点接口” 显示 org.apache.camel.Endpoint 接口的定义。

例 40.1. 端点接口

package org.apache.camel;

public interface Endpoint {
    boolean isSingleton();

    String getEndpointUri();

    String getEndpointKey();

    CamelContext getCamelContext();
    void setCamelContext(CamelContext context);

    void configureProperties(Map options);

    boolean isLenientProperties();

    Exchange createExchange();
    Exchange createExchange(ExchangePattern pattern);
    Exchange createExchange(Exchange exchange);

    Producer createProducer() throws Exception;

    Consumer createConsumer(Processor processor) throws Exception;
    PollingConsumer createPollingConsumer() throws Exception;
}

端点方法

Endpoint 接口定义了以下方法:

  • 如果您要确保每个 URI 映射到 CamelContext 中的单个端点,则 isSingleton () criu-wagonReturns true。当此属性为 true 时,对路由中相同 URI 的多个引用始终引用 单个 端点实例。当此属性为 false 时,在另一方面,对路由内同一 URI 的多个引用指的是 不同的 端点实例。每次引用路由中的 URI 时,都会创建一个新的端点实例。
  • getEndpointUri () criu-wagonReturns此端点的端点 URI。
  • 在注册端点时,getEndpointKey () criu-wagonUsed by org.apache.camel.spi.LifecycleStrategy
  • getCamelContext () criu- iwlreturn 对此端点所属的 CamelContext 实例的引用。
  • 设置CamelContext () criu- iwlSets 此端点所属的 CamelContext 实例。
  • 配置Properties () criu-HBACStores 参数映射的副本,用于在创建新 Consumer 实例时注入参数。
  • isLenientProperties () criu- iwlReturns true 来表示允许 URI 包含未知参数(即,无法在 Endpoint 或 Consumer 类上注入的参数)。通常,应该实施此方法返回 false
  • 具有以下变体的 createExchange () criu-wagonAn overloaded 方法:

    • 使用默认交换模式设置交换模式,交换 createExchange ()Creates a new exchange instance。
    • Exchange createExchange (ExchangePattern pattern) mvapich-PROFILECreates 是一个带有指定交换模式的新交换实例。
    • createExchange (Exchange exchange) criu-PROFILEConverts the given exchange 参数与此端点所需的交换类型进行交换。如果给定的交换不是正确的类型,此方法将其复制到正确类型的新实例中。这个方法的默认实现在 DefaultEndpoint 类中提供。
  • createProducer () criu-wagonFactory 方法,用于创建新的 Producer 实例。
  • createConsumer () criu- iwlFactory 方法来创建新的事件驱动的消费者实例。处理器 参数是路由中的第一个处理器的引用。
  • 创建PollingConsumer () criu-xxxxFactory 方法,以创建新的轮询消费者实例。

端点单例

为避免不必要的开销,最好为具有相同 URI ( CamelContext 中的)的所有端点创建一个端点实例。您可以通过实施 isSingleton () 来返回 true 来强制实施此条件。

注意

在这个上下文中,相同的 URI 意味着两个 URI 与使用字符串相等性进行比较时相同。在原则上,可以有两个等效的 URI,但由不同的字符串表示。在这种情况下,URI 不会被视为相同。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.