第 40 章 端点接口


摘要

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

40.1. 端点接口

概述

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

  • Event-driven
  • 调度的轮询
  • 轮询

这些端点实施模式可以补充用于实施 consumer-3 的相应模式,请参阅 第 41.2 节 “实施 Consumer 接口”

图 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 接口定义以下方法:

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

    • Exchange createExchange () InventoryService-wagonCreates 是一个具有默认交换模式设置的新交换实例。
    • Exchange createExchange (ExchangePattern pattern) HEKETI-wagonCreates 是一个具有指定交换模式的新交换实例。
    • Exchange createExchange (Exchange Exchange) HEKETI-wagonConverts the given Exchange 参数到此端点所需的交换类型。如果给定的交换不是正确的类型,则此方法将其复制到正确类型的新实例中。DefaultEndpoint 类中提供了此方法的默认实现。
  • createProducer () HEKETIFactory 方法,用于创建新的 Producer 实例。
  • createConsumer () swig- swigFactory 方法,以创建新的事件驱动的消费者实例。processor 参数是对路由中的第一个处理器的引用。
  • createPollingConsumer () HEKETI-wagonFactory 方法,以创建新的轮询消费者实例。

端点单例

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

注意

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.