210.4. Eclipse Kura コンポーネント
Camel 2.15 以降で利用可能
このドキュメントページでは、Camel と Eclipse Kura M2M ゲートウェイの統合オプションを説明します。Camel ルートを Eclipse Kura にデプロイする一般的な理由は、エンタープライズ統合パターンと Camel コンポーネントをメッセージング M2M ゲートウェイに提供することです。たとえば、Kura を Raspberry PI にインストールし、Kura サービスを使用してその Raspberry PI に取り付けられたセンサーから温度を読み取り、最後に Camel EIP とコンポーネントを使用して現在の温度値をデータセンターサービスに転送することができます。
210.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 をデプロイすることを推奨します。
				
210.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.kuraCamel コンポーネントはランタイムレベルでサービスとして解決されるため、ルートで使用する予定のすべての 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>210.4.3. KuraRouter ユーティリティー
Kura router base class provides many useful utilities. This section explores each of them.
 Kura router base class provides many useful utilities. This section
explores each of them.210.4.3.1. SLF4J ロガー
						Kura は、ロギング目的で SLF4J ファサードを使用します。保護されたメンバー log は、指定された Kura ルーターに関連付けられた SLF4J ロガーインスタンスを返します。
					
210.4.3.2. BundleContext
						保護されたメンバー bundleContext は、指定された Kura ルーターに関連付けられたバンドルコンテキストを返します。
					
210.4.3.3. CamelContext
						保護されたメンバー camelContext は、指定された Kura ルーターに関連付けられた CamelContext です。
					
210.4.3.4. ProducerTemplate
						保護されたメンバーの producerTemplate は、指定された Camel コンテキストに関連付けられた ProducerTemplate インスタンスです。
					
210.4.3.5. ConsumerTemplate
						保護されたメンバーの consumerTemplate は、指定された Camel コンテキストに関連付けられた ConsumerTemplate インスタンスです。
					
210.4.3.6. OSGi サービスリゾルバー
						OSGi サービスリゾルバー (service(Class<T> serviceType)) を使用すると、OSGi バンドルコンテキストからタイプ別にサービスを簡単に取得できます。
					
						サービスが見つからない場合は、null 値が返されます。サービスが利用できない場合にアプリケーションを失敗させたい場合は、代わりに requiredService(Class) メソッドを使用してください。サービスが見つからない場合、requiredService は IllegalStateException をスローします。
					
210.4.4. KuraRouter アクティベーターのコールバック
					Kura ルーターには、Camel ルーターの動作方法をカスタマイズするために使用できるライフサイクルコールバックが付属しています。たとえば、ルーターが開始される直前にルーターに関連付けられた CamelContext インスタンスを設定するには、KuraRouter クラスの beforeStart メソッドをオーバーライドします。
				
210.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 ルートファイルである必要があります。
				
210.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>210.4.7. 関連項目
- Configuring Camel (Camel の設定)
- Component
- Endpoint
- スタートガイド