208.3. Eclipse Kura コンポーネント
Camel 2.15 以降で利用可能
このドキュメントページでは、Camel と Eclipse Kura M2M ゲートウェイの統合オプションについて説明します。Camel ルートを Eclipse Kura にデプロイする一般的な理由は、エンタープライズ統合パターンと Camel コンポーネントをメッセージング M2M ゲートウェイに提供することです。たとえば、Kura を Raspberry PI にインストールし、Kura サービスを使用してその Raspberry PI に取り付けられたセンサーから温度を読み取り、最後に Camel EIP とコンポーネントを使用して現在の温度値をデータセンターサービスに転送することができます。
208.3.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
をデプロイすることをお勧めします。
208.3.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>
208.3.3. KuraRouter ユーティリティー リンクのコピーリンクがクリップボードにコピーされました!
Kura ルーターの基本クラスは、多くの便利なユーティリティーを提供します。このセクションでは、それぞれについて説明します。
208.3.3.1. SLF4J ロガー リンクのコピーリンクがクリップボードにコピーされました!
Kura は、ロギング目的で SLF4J ファサードを使用します。保護されたメンバー log
は、指定された Kura ルーターに関連付けられた SLF4J ロガーインスタンスを返します。
208.3.3.2. BundleContext リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバー bundleContext
は、指定された Kura ルーターに関連付けられたバンドルコンテキストを返します。
208.3.3.3. CamelContext リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバー camelContext
は、指定された Kura ルーターに関連付けられた CamelContext
です。
208.3.3.4. ProducerTemplate リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバーの producerTemplate
は、指定された Camel コンテキストに関連付けられた ProducerTemplate
インスタンスです。
208.3.3.5. ConsumerTemplate リンクのコピーリンクがクリップボードにコピーされました!
保護されたメンバーの consumerTemplate
は、指定された Camel コンテキストに関連付けられた ConsumerTemplate
インスタンスです。
208.3.3.6. OSGi サービスリゾルバー リンクのコピーリンクがクリップボードにコピーされました!
OSGi サービスリゾルバー (service(Class<T> serviceType)
) を使用すると、OSGi バンドルコンテキストからタイプ別にサービスを簡単に取得できます。
サービスが見つからない場合は、null
値が返されます。サービスが利用できない場合にアプリケーションを失敗させたい場合は、代わりに requiredService(Class)
メソッドを使用してください。サービスが見つからない場合、requiredService
は IllegalStateException
を出力します。
208.3.4. KuraRouter アクティベーターのコールバック リンクのコピーリンクがクリップボードにコピーされました!
Kura ルーターには、Camel ルーターの動作方法をカスタマイズするために使用できるライフサイクルコールバックが付属しています。たとえば、ルーターが開始される直前にルーターに関連付けられた CamelContext
インスタンスを設定するには、KuraRouter
クラスの beforeStart
メソッドをオーバーライドします。
208.3.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 ルートファイルである必要があります。
208.3.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>
208.3.7. 関連項目 リンクのコピーリンクがクリップボードにコピーされました!
- Configuring Camel (Camel の設定)
- コンポーネント
- エンドポイント
- スタートガイド