202.7. LevelDB
Camel 2.10 以降で利用可能
Leveldb は、非常に軽量で組み込み可能なキー値データベースです。Camel と一緒に、Aggregator などのさまざまな Camel 機能の永続的なサポートを提供できます。
それが提供する現在の機能:
- LevelDBAggregationRepository
202.7.1. LevelDBAggregationRepository の使用
LevelDBAggregationRepository
は AggregationRepository
であり、その場で集約されたメッセージを永続化します。デフォルトのアグリゲーターはメモリー内のみの AggregationRepository
を使用するため、これによりメッセージが失われないことが保証されます。
以下のオプションがあります。
オプション | タイプ | 説明 |
---|---|---|
| String |
必須のリポジトリー名。複数のリポジトリーで共有 |
| String | 永続ストレージのファイル名。起動時にファイルが存在しない場合は、新しいファイルが作成されます。 |
| LevelDBFile |
既存の設定済み |
| boolean | Camel 2.12: LevelDBFile が書き込み時に同期するかどうか。デフォルトは false です。書き込み時に同期することにより、すべての書き込みがディスクにスプールされるのを常に待機するため、更新が失われることはありません。非同期書き込みと同期書き込みの詳細については、LevelDB のドキュメント を参照してください。 |
| boolean |
古い既存の Exchange が存在する場合、get 操作でそれを返すかどうか。デフォルトでは、集約時に古いエクスチェンジは必要ないため、最適化するにはこのオプションは |
| boolean |
リカバリーが有効かどうか。このオプションはデフォルトで |
| long | 回復が有効になっている場合、x 回ごとにバックグラウンドタスクが実行され、失敗した交換をスキャンして回復し、再送信します。デフォルトでは、この間隔は 5000 ミリ秒です。 |
| int |
回復されたエクスチェンジの再配信試行の最大回数を制限できます。有効にすると、すべての再配信の試行が失敗した場合、エクスチェンジはデッドレターチャネルに移動されます。デフォルトでは、このオプションは無効となっています。このオプションを使用する場合は、 |
| String |
枯渇した回復済みエクスチェンジが移動されるデッドレターチャネルのエンドポイント uri。このオプションを使用する場合、 |
repositoryName
オプションを指定する必要があります。次に、persistentFileName
または levelDBFile
を指定する必要があります。
202.7.2. 持続時に保持されるもの
LevelDBAggregationRepository
は、Serializable
な互換性のあるメッセージ本文のデータ型のみを保持します。メッセージヘッダーは、プリミティブ/文字列/数字/などである必要があります。データ型がそのような型でない場合は削除され、WARN
がログに記録されます。また、Message
ボディーと Message
ヘッダーのみを保持します。Exchange
プロパティーは保持され ません。
202.7.3. 復元
LevelDBAggregationRepository
はデフォルトで、失敗した Exchange を回復します。これは、永続ストア内の失敗したエクスチェンジをスキャンするバックグラウンドタスクを持つことによって行われます。checkInterval
オプションを使用して、このタスクの実行頻度を設定できます。回復はトランザクションとして機能するため、Camel は失敗したエクスチェンジを回復して再配信しようとします。回復されたことが判明したエクスチェンジは、永続ストアから復元され、再送信され、再度送信されます。
次のヘッダーは、エクスチェンジが回復または再配信されるときに設定されます。
ヘッダー | タイプ | 説明 |
---|---|---|
| Boolean | エクスチェンジが再配信されていることを示すために true に設定されます。 |
| Integer | 1 から始まる再配信の試行。 |
エクスチェンジが正常に処理された場合にのみ、AggregationRepository
で confirm
メソッドが呼び出されたときに完了としてマークされます。これは、同じエクスチェンジが再び失敗した場合、成功するまで再試行されることを意味します。
オプション maximumRedeliveries
を使用して、復元された特定の Exchange の再配信試行の最大回数を制限できます。maximumRedeliveries
に達したときに Camel がエクスチェンジの送信先を認識できるように、deadLetterUri
オプションも設定する必要があります。
このテスト など、camel-leveldb の単体テストでいくつかの例を確認できます。
202.7.3.1. Java DSL での LevelDBAggregationRepository の使用
この例では、集計されたメッセージを target/data/leveldb.dat
ファイルに保存します。
202.7.3.2. Spring XML での LevelDBAggregationRepository の使用
同じ例ですが、代わりに Spring XML を使用しています。
202.7.4. 依存関係
camel ルートで LevelDB を使用するには、camel-leveldb に依存関係を追加する必要があります。
Maven を使用する場合は、pom.xml に以下を追加するだけで、バージョン番号を最新かつ最高のリリースに置き換えます (最新バージョンのダウンロードページを参照してください)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-leveldb</artifactId> <version>2.10.0</version> </dependency>
202.7.5. 関連項目
- Configuring Camel (Camel の設定)
- コンポーネント
- エンドポイント
- スタートガイド
- アグリゲーター
- HawtDB
- コンポーネント