第 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-wagonReturnstrue
。当此属性为true
时,对路由中相同 URI 的多个引用始终引用 单个 端点实例。当此属性为false
时,在另一方面,对路由内同一 URI 的多个引用指的是 不同的 端点实例。每次引用路由中的 URI 时,都会创建一个新的端点实例。 -
getEndpointUri ()
criu-wagonReturns此端点的端点 URI。 -
在注册端点时,
getEndpointKey ()
criu-wagonUsed byorg.apache.camel.spi.LifecycleStrategy
。 -
getCamelContext ()
criu- iwlreturn 对此端点所属的CamelContext
实例的引用。 -
设置CamelContext ()
criu- iwlSets 此端点所属的CamelContext
实例。 -
配置Properties ()
criu-HBACStores 参数映射的副本,用于在创建新Consumer
实例时注入参数。 -
isLenientProperties ()
criu- iwlReturnstrue
来表示允许 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 givenexchange
参数与此端点所需的交换类型进行交换。如果给定的交换不是正确的类型,此方法将其复制到正确类型的新实例中。这个方法的默认实现在DefaultEndpoint
类中提供。
-
使用默认交换模式设置交换模式,交换
-
createProducer ()
criu-wagonFactory 方法,用于创建新的Producer
实例。 -
createConsumer ()
criu- iwlFactory 方法来创建新的事件驱动的消费者实例。处理器
参数是路由中的第一个处理器的引用。 -
创建PollingConsumer ()
criu-xxxxFactory 方法,以创建新的轮询消费者实例。
端点单例
为避免不必要的开销,最好为具有相同 URI ( CamelContext 中的)的所有端点创建一个端点实例。您可以通过实施 isSingleton ()
来返回 true
来强制实施此条件。
在这个上下文中,相同的 URI 意味着两个 URI 与使用字符串相等性进行比较时相同。在原则上,可以有两个等效的 URI,但由不同的字符串表示。在这种情况下,URI 不会被视为相同。