40.2. エンドポイントインターフェイスの実装
エンドポイントを実装する代替方法 リンクのコピーリンクがクリップボードにコピーされました!
以下の代替エンドポイント実装パターンがサポートされます。
イベント駆動型のエンドポイント実装 リンクのコピーリンクがクリップボードにコピーされました!
カスタムエンドポイントがイベント駆動型のパターン (「コンシューマーパターンおよびスレッド」 を参照) に準拠する場合、例40.2「DefaultEndpoint の実装」 に示されているように org.apache.camel.impl.DefaultEndpoint 抽象クラスを拡張することで実装されます。
例40.2 DefaultEndpoint の実装
- 1
DefaultEndpointクラスを拡張して、イベント駆動型 CustomEndpoint カスタムエンドポイントを実装します。- 2
- エンドポイント URI の
endpointUriおよび親コンポーネントの参照componentを引数として取るコンストラクターが少なくとも 1 つ必要です。 - 3
createProducer()ファクトリーメソッドを実装し、プロデューサーエンドポイントを作成します。- 4
createConsumer(): イベント駆動型のコンシューマーインスタンスを作成するためのファクトリーメソッド。- 5
- 通常、
createExchange()メソッドを上書きする必要は ありません。DefaultEndpointから継承された実装は、デフォルトでDefaultExchangeオブジェクトを作成します。これは任意の Apache Camel コンポーネントで使用できます。ただし、DefaultExchangeオブジェクトで一部のエクスチェンジプロパティーを初期化する必要がある場合は、エクスチェンジプロパティー設定を追加するために、このcreateExchange()メソッドを上書きすることが推奨されます。
createPollingConsumer() メソッドをオーバーライド しないでください。
DefaultEndpoint クラスは、以下のメソッドのデフォルト実装を提供します。これは、カスタムエンドポイントコードを書き込む際に役立つ場合があります。
-
getEndpointUri(): エンドポイント URI を返します。 -
getCamelContext():CamelContextへの参照を返します。 -
getComponent(): 親コンポーネントへの参照を返します。 -
createPollingConsumer(): ポーリングコンシューマーを作成します。作成されたポーリングコンシューマーの機能は、イベント駆動型のコンシューマーに基づいています。createConsumer()でイベント駆動型のコンシューマーメソッドを上書きする場合は、ポーリングコンシューマー実装を取得できます。 -
createExchange(Exchange e): 指定のエクスチェンジオブジェクトeを、このエンドポイントに必要な型に変換します。このメソッドは、上書きされたcreateExchange()エンドポイントを使用して、新しいエンドポイントを作成します。これにより、メソッドがカスタムのエクスチェンジタイプでも機能するようになります。
スケジュールされたポーリングエンドポイントの実装 リンクのコピーリンクがクリップボードにコピーされました!
カスタムエンドポイントがスケジュールされたポーリングパターン (「コンシューマーパターンおよびスレッド」 を参照) に準拠する場合、例40.3「ScheduledPollEndpoint 実装」 に示されている org.apache.camel.impl.ScheduledPollEndpoint の抽象クラスから継承して実装されます。
例40.3 ScheduledPollEndpoint 実装
- 1
ScheduledPollEndpointクラスを拡張して、スケジュールされたポーリングのカスタムエンドポイント CustomEndpoint を実装します。- 2
- エンドポイント URI の
endpointUriおよび親コンポーネントの参照componentを引数として取るコンストラクターが少なくとも 1 つ必要です。 - 3
createProducer()ファクトリーメソッドを実装し、プロデューサーエンドポイントを作成します。- 4
- スケジュールされたポーリングコンシューマーインスタンスを作成するには、
createConsumer()ファクトリーメソッドを実装します。 - 5
ScheduledPollEndpointベースクラスで定義されるconfigureConsumer()メソッドは、コンシューマークエリーオプションをコンシューマーに注入します。「コンシューマーパラメーターの注入」 を参照してください。- 6
- 通常、
createExchange()メソッドを上書きする必要は ありません。DefaultEndpointから継承された実装は、デフォルトでDefaultExchangeオブジェクトを作成します。これは任意の Apache Camel コンポーネントで使用できます。ただし、DefaultExchangeオブジェクトで一部のエクスチェンジプロパティーを初期化する必要がある場合は、エクスチェンジプロパティー設定を追加するために、このcreateExchange()メソッドを上書きすることが推奨されます。
createPollingConsumer() メソッドをオーバーライド しないでください。
ポーリングエンドポイントの実装 リンクのコピーリンクがクリップボードにコピーされました!
カスタムエンドポイントがポーリングコンシューマーパターン (「コンシューマーパターンおよびスレッド」 を参照) に準拠する場合、例40.4「DefaultPollingEndpoint 実装」 に示されている org.apache.camel.impl.DefaultPollingEndpoint の抽象クラスから継承して実装されます。
例40.4 DefaultPollingEndpoint 実装
この CustomEndpoint クラスはポーリングエンドポイントであるため、createConsumer() メソッドの代わりに createPollingConsumer() メソッドを実装する必要があります。createPollingConsumer() から返されるコンシューマーインスタンスは、PollingConsumer インターフェイスから継承する必要があります。ポーリングコンシューマーの実装方法は、「ポーリングコンシューマーの実装」 を参照してください。
createPollingConsumer() メソッドの実装以外に、DefaultPollingEndpoint を実装する手順は、ScheduledPollEndpoint を実装する手順と似ています。詳細は、例40.3「ScheduledPollEndpoint 実装」 を参照してください。
BrowsableEndpoint インターフェイスの実装 リンクのコピーリンクがクリップボードにコピーされました!
現在のエンドポイントで保留中のエクスチェンジインスタンスの一覧を公開する場合は、例40.5「BrowsableEndpoint インターフェイス」 に示されているように org.apache.camel.spi.BrowsableEndpoint インターフェースを実装することができます。エンドポイントが受信イベントのバッファー処理を実行する場合は、このインターフェイスを実装することが理にかなっています。たとえば、Apache Camel SEDA エンドポイントは BrowsableEndpoint インターフェースを実装します。例40.6「SedaEndpoint 実装」 を参照してください。
例40.5 BrowsableEndpoint インターフェイス
例 リンクのコピーリンクがクリップボードにコピーされました!
例40.6「SedaEndpoint 実装」 は、SedaEndpoint の実装例を示しています。SEDA エンドポイントは、イベント駆動型のエンドポイント の例です。受信イベントは FIFO キュー (java.util.concurrent.BlockingQueue のインスタンス) に格納され、SEDA コンシューマーは、イベントの読み取りおよび処理のためにスレッドを起動します。イベント自体は org.apache.camel.Exchange オブジェクトによって表されます。
例40.6 SedaEndpoint 実装
- 1
SedaEndpointクラスは、DefaultEndpointクラスを拡張してイベント駆動型のエンドポイントを実装するパターンに従います。このSedaEndpointクラスは、キュー内のエクスチェンジオブジェクトのリストへのアクセスを提供する BrowsableEndpoint インターフェイスも実装します。- 2
SedaEndpointはイベント駆動型のコンシューマーの通常のパターンに従い、エンドポイント引数endpointUriおよびコンポーネント参照引数componentを使用するコンストラクターを定義します。- 3
- もう 1 つのコンストラクターが提供され、キューの作成を親コンポーネントインスタンスに委譲します。
- 4
- ファクトリーメソッド
createProducer()は、イベントをキューに追加するプロデューサーの実装であるCollectionProducerのインスタンスを作成します。 - 5
- ファクトリーメソッド
createConsumer()は、SedaConsumerのインスタンスを作成します。これはキューからイベントをプルし、それらを処理します。 - 6
getQueue()メソッドはキューへの参照を返します。- 7
isSingleton()メソッドはtrueを返します。これは、一意の URI 文字列ごとに単一のエンドポイントインスタンスを作成する必要があることを示します。- 8
- この
getExchanges()メソッドは、対応する BrowsableEndpoint からの抽象メソッドを実装します。