第40章 Endpoint インターフェイス
概要
この章では、Apache Camel コンポーネントの実装における必須ステップである Endpoint インターフェイスを実装する方法を説明します。
40.1. Endpoint インターフェイス リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
org.apache.camel.Endpoint タイプのインスタンスはエンドポイント URI をカプセル化します。また、Consumer、Producer、Exchange オブジェクトのファクトリーとしても機能します。エンドポイントを実装するには、以下の 3 つの方法があります。
- イベント駆動型
- スケジュールされたポーリング
- ポーリング
これらのエンドポイント実装パターンは、コンシューマーの実装に対応するパターンを補完します。「Consumer インターフェイスの実装」 を参照してください。
図40.1「コンシューマー継承階層」 は、Endpoint 継承階層を設定する、関連のある Java インターフェイスとクラスを示しています。
図40.1 コンシューマー継承階層
Endpoint インターフェイス リンクのコピーリンクがクリップボードにコピーされました!
例40.1「Endpoint インターフェイス」 は、org.apache.camel.Endpoint インターフェースの定義を示しています。
例40.1 Endpoint インターフェイス
エンドポイントメソッド リンクのコピーリンクがクリップボードにコピーされました!
Endpoint インターフェイスは以下のメソッドを定義します。
-
isSingleton(): 各 URI が CamelContext 内の単一のエンドポイントにマップされるように保証する場合には、trueを返します。このプロパティーがtrueの場合、ルート内の同一 URI への複数の参照は常に 単一 のエンドポイントインスタンスを参照します。一方、このプロパティーがfalseの場合、ルート内の同じ URI への複数の参照は 個別 のエンドポイントインスタンスを参照します。ルートで URI を参照するたびに、新しいエンドポイントインスタンスが作成されます。 -
getEndpointUri(): このエンドポイントのエンドポイント URI を返します。 -
getEndpointKey()− エンドポイントを登録する際に、org.apache.camel.spi.LifecycleStrategyによって使用されます。 -
getCamelContext(): このエンドポイントが属するCamelContextインスタンスへの参照を返します。 -
setCamelContext(): このエンドポイントが属するCamelContextインスタンスへの参照を返します。 -
configureProperties()- 新規にConsumerインスタンスを作成する時にパラメーターの挿入に使用されるパラメーターマップのコピーを保存します。 -
isLenientProperties():trueの場合は URI が不明なパラメーターを含むことができることを示します (つまり、エンドポイントまたはConsumerクラスに注入できないパラメーターです)。通常、このメソッドはfalseを返すために実装する必要があります。 createExchange(): 以下のバリアントを持つオーバーロードされたメソッド。-
Exchange createExchange(): デフォルトの交換パターン設定を使用して、新規のエクスチェンジインスタンスを作成します。 -
Exchange createExchange(ExchangePattern pattern)- 指定されたエクスチェンジパターンで新しいエクスチェンジインスタンスを作成します。 -
Exchange createExchange(Exchange exchange)- 指定されたexchange引数を、このエンドポイントに必要なエクスチェンジのタイプに変換します。指定のエクスチェンジがまだ正しいタイプでない場合、このメソッドはこれを正しいタイプの新規インスタンスにコピーします。このメソッドのデフォルト実装はDefaultEndpointクラスにあります。
-
-
createProducer(): 新しいProducerインスタンスを作成するために使用されるファクトリーメソッド。 -
createConsumer(): イベント駆動型のコンシューマーインスタンスを新たに作成するためのファクトリーメソッド。processor引数は、ルートの最初のプロセッサーへの参照です。 -
createPollingConsumer(): 新しいポーリングコンシューマーインスタンスを作成するためのファクトリーメソッド。
エンドポイントシングルトン リンクのコピーリンクがクリップボードにコピーされました!
不要なオーバーヘッドを避けるために、同じ URI (CamelContext 内) を持つすべてのエンドポイントに 単一 のエンドポイントインスタンスを作成することが推奨されます。isSingleton() を実装して true を返すことにより、この条件を強制することができます。
このコンテキストでは、同じ URI は文字列の等価を使用して 2 つの URI が同じであることを意味します。原則では、異なる文字列で表されますが、同等の URI を 2 つ持つことができます。この場合、URI は同じものとして処理されません。