209.4. Eclipse Kura コンポーネント
Camel 2.15 以降で利用可能
このドキュメントページでは、Camel と Eclipse Kura M2M ゲートウェイの統合オプションについて説明します。Camel ルートを Eclipse Kura にデプロイする一般的な理由は、エンタープライズ統合パターンと Camel コンポーネントをメッセージング M2M ゲートウェイに提供することです。たとえば、Kura を Raspberry PI にインストールし、Kura サービスを使用してその Raspberry PI に取り付けられたセンサーから温度を読み取り、最後に Camel EIP とコンポーネントを使用して現在の温度値をデータセンターサービスに転送することができます。
209.4.1. KuraRouter アクティベーター リンクのコピーリンクがクリップボードにコピーされました!
Eclipse Kura にデプロイされたバンドルは、通常、バンドルアクティベーターとして開発されます。したがって、Apache Camel ルートを Kura にデプロイする最も簡単な方法は、org.apache.camel.kura.KuraRouter クラスを拡張するクラスを含む OSGi バンドルを作成することです。
KuraRouter は org.osgi.framework.BundleActivator インターフェイスを実装しているため、Kura バンドルコンポーネントクラスを作成する 際に、start および stop ライフサイクルメソッドを登録する必要があることに注意してください。
Kura ルーターは、独自の OSGi 対応の CamelContext を開始します。これは、KuraRouter を拡張するすべてのクラスに対して、専用の CamelContext インスタンスが存在することを意味します。理想的には、OSGi バンドルごとに 1 つの KuraRouter をデプロイすることをお勧めします。
209.4.2. KuraRouter のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Kura ルータークラスを含むバンドルは、OSGi マニフェストに次のパッケージをインポートする必要があります。
Import-Package: org.osgi.framework;version="1.3.0", org.slf4j;version="1.6.4", org.apache.camel,org.apache.camel.impl,org.apache.camel.core.osgi,org.apache.camel.builder,org.apache.camel.model, org.apache.camel.component.kura
Import-Package: org.osgi.framework;version="1.3.0",
org.slf4j;version="1.6.4",
org.apache.camel,org.apache.camel.impl,org.apache.camel.core.osgi,org.apache.camel.builder,org.apache.camel.model,
org.apache.camel.component.kura
Camel コンポーネントはランタイムレベルでサービスとして解決されるため、ルートで使用する予定のすべての Camel コンポーネントバンドルをインポートする必要はないことに注意してください。
ルーターバンドルをデプロイメントする前に、次の Camel コアバンドルをデプロイメント (および開始) していることを確認してください (Kura GoGo シェルを使用)…
…そして、ルートで使用する予定のすべてのコンポーネント:
install file:///home/user/.m2/repository/org/apache/camel/camel-stream/2.15.0/camel-stream-2.15.0.jar start <camel-stream-bundle-id>
install file:///home/user/.m2/repository/org/apache/camel/camel-stream/2.15.0/camel-stream-2.15.0.jar
start <camel-stream-bundle-id>
最後に、ルーターバンドルをデプロイします。
install file:///home/user/.m2/repository/com/example/myrouter/1.0/myrouter-1.0.jar start <your-bundle-id>
install file:///home/user/.m2/repository/com/example/myrouter/1.0/myrouter-1.0.jar
start <your-bundle-id>
209.4.3. KuraRouter ユーティリティー リンクのコピーリンクがクリップボードにコピーされました!
Kura ルーターの基本クラスは、多くの便利なユーティリティーを提供します。このセクションでは、それぞれについて説明します。
209.4.3.1. SLF4J ロガー リンクのコピーリンクがクリップボードにコピーされました!
Kura は、ロギング目的で SLF4J ファサードを使用します。保護されたメンバー log は、指定された Kura ルーターに関連付けられた SLF4J ロガーインスタンスを返します。
209.4.3.2. BundleContext リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバー bundleContext は、指定された Kura ルーターに関連付けられたバンドルコンテキストを返します。
209.4.3.3. CamelContext リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバー camelContext は、指定された Kura ルーターに関連付けられた CamelContext です。
209.4.3.4. ProducerTemplate リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバーの producerTemplate は、指定された Camel コンテキストに関連付けられた ProducerTemplate インスタンスです。
209.4.3.5. ConsumerTemplate リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバーの consumerTemplate は、指定された Camel コンテキストに関連付けられた ConsumerTemplate インスタンスです。
209.4.3.6. OSGi サービスリゾルバー リンクのコピーリンクがクリップボードにコピーされました!
OSGi サービスリゾルバー (service(Class<T> serviceType)) を使用すると、OSGi バンドルコンテキストからタイプ別にサービスを簡単に取得できます。
サービスが見つからない場合は、null 値が返されます。サービスが利用できない場合にアプリケーションを失敗させたい場合は、代わりに requiredService(Class) メソッドを使用してください。サービスが見つからない場合、requiredService は IllegalStateException を出力します。
209.4.4. KuraRouter アクティベーターのコールバック リンクのコピーリンクがクリップボードにコピーされました!
Kura ルーターには、Camel ルーターの動作方法をカスタマイズするために使用できるライフサイクルコールバックが付属しています。たとえば、ルーターが開始される直前にルーターに関連付けられた CamelContext インスタンスを設定するには、KuraRouter クラスの beforeStart メソッドをオーバーライドします。
209.4.5. ConfigurationAdmin からの XML ルートのロード リンクのコピーリンクがクリップボードにコピーされました!
サーバー設定からルートの XML 定義を読み取ることが必要な場合があります。これは、OTA 再デプロイのコストが大きくなる可能性がある IoT ゲートウェイの一般的なシナリオです。この要件に対処するために、各 KuraRouter は、OSGi ConfigurationAdmin を使用して kura.camel PID から kura.camel.BUNDLE-SYMBOLIC-NAME.route プロパティーを探します。このアプローチにより、デプロイされた KuraRouter ごとに Camel XML ルートファイルを定義できます。ルートを更新するには、適切な設定プロパティーを編集し、それに関連付けられたバンドルを再起動するだけです。kura.camel.BUNDLE-SYMBOLIC-NAME.route プロパティーのコンテンツは、次のような Camel XML ルートファイルである必要があります。
209.4.6. Kura ルーターを宣言型 OSGi サービスとしてデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Kura ルーターを宣言型 OSGi サービスとしてデプロイしたい場合は、KuraRouter が提供する activate メソッドと activate メソッドを使用できます。
<scr:component name="org.eclipse.kura.example.camel.MyKuraRouter" activate="activate" deactivate="deactivate" enabled="true" immediate="true"> <implementation class="org.eclipse.kura.example.camel.MyKuraRouter"/> </scr:component>
<scr:component name="org.eclipse.kura.example.camel.MyKuraRouter" activate="activate" deactivate="deactivate" enabled="true" immediate="true">
<implementation class="org.eclipse.kura.example.camel.MyKuraRouter"/>
</scr:component>
209.4.7. 関連項目 リンクのコピーリンクがクリップボードにコピーされました!
- Configuring Camel (Camel の設定)
- コンポーネント
- エンドポイント
- スタートガイド