第 40 章 端点接口

摘要

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

40.1. 端点接口

概述

org.apache.camel.Endpoint 类型的实例封装了端点 URI,它也充当 消费者、Producer Exchange 对象的工厂。实施端点的方法有三种:

  • Event-driven
  • 计划轮询
  • 轮询

这些端点实施模式与对应的模式补充,用于实施使用者","-abrtsee 第 41.2 节 “实现使用者接口”

图 40.1 “端点继承层次结构” 显示构成 端点 继承层次结构的相关 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 接口定义了以下方法:

  • 代表Singleton() InventoryService-abrtRe returns true,如果您要确保每个 URI 映射到 CamelContext 中的一个端点。当此属性为 true 时,指向路由中相同 URI 的多个引用始终引用 单个 端点实例。另一方面,当此属性为 false 时,对路由中同一 URI 的多个引用指的是 不同的 端点实例。每次引用路由中的 URI 时,都会创建一个新的端点实例。
  • getEndpointUri() abrt- the endpointRe 返回此端点的端点 URI。
  • 在注册端点时,由 org.apache.camel.spi.LifecycleStrategygetEndpointKey() Infoblox- InfobloxUsed by org.apache.camel.spi.LifecycleStrategy。
  • getCamelContext() 进行对该端点所属的 CamelContext 实例的引用。
  • 设置此端点 所属的 CamelContext Set。
  • 配置Properties() >_<-jaxbStores 是参数映射的副本,用于在创建新 Consumer 实例时注入参数。
  • isLenientProperties() 时间为 true,表示允许 URI 包含未知参数(即,不能在 Endpoint 或 Consumer 类上注入的参数)。通常,应实施此方法来返回
  • 使用以下变体 创建Exchange() 3.10.0-- theAn overloaded 方法:

    • Exchange createExchange() Infoblox-jaxbCreates a new exchange pattern 设置。
    • Exchange createExchange(ExchangePattern pattern) abrt-abrtCreates a new exchange instance with specified exchange pattern.
    • Exchange createExchange(Exchange exchange) the given exchange 参数到此端点所需的交换类型。如果给定交换尚未正确类型,则此方法将其复制到正确类型的新实例中。DefaultEndpoint 类中提供了此方法的默认实现。
  • createProducer() >_<->_<Factory 方法 用于创建新的 Producer 实例。
  • createConsumer() 10.10.10.2-CustomizationFactory 方法,以创建新的事件驱动的消费者实例。processor 参数是对路由中的第一个处理器的引用。
  • 创建PollingConsumer()10.10.10.2 ->_<Factory 方法,以创建新的轮询消费者实例。

端点单例

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

注意

在这个上下文中,同一 URI 意味着,使用字符串相等时两个 URI 相同。在原则上,可以有两个等效的 URI,虽然由不同的字符串表示。在这种情况下,URI 不会像一样对待。