128.6. HawtDB
Camel 2.3 の時点で利用可能
HawtDB は非常に軽量で組み込み可能なキー値データベースです。Camel と一緒に、Aggregator などのさまざまな Camel 機能の永続的なサポートを提供できます。
非推奨
HawtDB プロジェクトは非推奨になり、軽量で埋め込み可能なキー値データベースとして leveldb に置き換えられています。leveldb を簡単に使用できるようにするための leveldbjni プロジェクトがあります。Apache ActiveMQ プロジェクトは、今後 kahadb を置き換えるために、主要なファイルベースのメッセージストアとして leveldb を使用することを計画しています。
これの代わりに使用することをお勧めする camel-leveldb コンポーネントがあります。
HawtDB 1.4 以前の問題
HawtDB 1.4 以前にはバグがあり、ファイルストアが未使用のスペースを解放しません。これは、ファイルが増え続けることを意味します。これは、Camel 2.5 以降に同梱されている HawtDB 1.5 で修正されています。
それが提供する現在の機能:
- HawtDBAggregationRepository
128.6.1. HawtDBAggregationRepository の使用
HawtDBAggregationRepository
は AggregationRepository
であり、その場で集約されたメッセージを永続化します。デフォルトのアグリゲーターはメモリー内のみの AggregationRepository
を使用するため、これによりメッセージが失われないことが保証されます。
以下のオプションがあります。
オプション | タイプ | 説明 |
---|---|---|
| String |
必須のリポジトリー名。複数のリポジトリーに共有 |
| String | 永続ストレージのファイル名。起動時にファイルが存在しない場合は、新しいファイルが作成されます。 |
| int | ファイルストアにマップされるメモリーセグメントバッファーのサイズ。デフォルトでは 8MB です。値はバイト単位です。 |
| boolean |
|
| short | メモリーページのサイズ。デフォルトでは 512 バイトです。値はバイト単位です。 |
| HawtDBFile |
既存の設定済み |
| boolean |
古い既存の Exchange が存在する場合、get 操作でそれを返すかどうか。デフォルトでは、集約時に古いエクスチェンジは必要ないため、最適化するにはこのオプションは |
| boolean |
リカバリーが有効かどうか。このオプションはデフォルトで |
| long | 回復が有効になっている場合、x 回ごとにバックグラウンドタスクが実行され、失敗した交換をスキャンして回復し、再送信します。デフォルトでは、この間隔は 5000 ミリ秒です。 |
| int |
回復されたエクスチェンジの再配信試行の最大回数を制限できます。有効にすると、すべての再配信の試行が失敗した場合、エクスチェンジはデッドレターチャネルに移動されます。デフォルトでは、このオプションは無効となっています。このオプションを使用する場合は、 |
| String |
枯渇した回復済みエクスチェンジが移動されるデッドレターチャネルのエンドポイント uri。このオプションを使用する場合、 |
|
| Camel 2.12: 複数の Camel アプリケーションが同じ HawtDB ベースの集計リポジトリーを共有するクラスター化された環境で必要になることが多い楽観的ロックを有効にします。 |
repositoryName
オプションを指定する必要があります。次に、persistentFileName
または hawtDBFile
を指定する必要があります。
128.6.2. 持続時に保持されるもの
HawtDBAggregationRepository
は、Serializable
な互換性のあるデータ型のみを保持します。データ型がそのような型でない場合は削除され、WARN
がログに記録されます。また、Message
ボディーと Message
ヘッダーのみを保持します。Exchange
プロパティーは保持され ません。
128.6.3. 復元
HawtDBAggregationRepository
はデフォルトで、失敗したエクスチェンジを回復します。これは、永続ストア内の失敗したエクスチェンジをスキャンするバックグラウンドタスクを持つことによって行われます。checkInterval
オプションを使用して、このタスクの実行頻度を設定できます。回復はトランザクションとして機能するため、Camel は失敗したエクスチェンジを回復して再配信しようとします。回復されたことが判明したエクスチェンジは、永続ストアから復元され、再送信され、再度送信されます。
次のヘッダーは、エクスチェンジが回復または再配信されるときに設定されます。
ヘッダー | タイプ | 説明 |
---|---|---|
| Boolean | エクスチェンジが再配信されていることを示すために true に設定されます。 |
| Integer | 1 から始まる再配信の試行。 |
エクスチェンジが正常に処理された場合にのみ、AggregationRepository
で confirm
メソッドが呼び出されたときに完了としてマークされます。これは、同じエクスチェンジが再び失敗した場合、成功するまで再試行されることを意味します。
オプション maximumRedeliveries
を使用して、復元された特定の Exchange の再配信試行の最大回数を制限できます。maximumRedeliveries
に達したときに Camel がエクスチェンジの送信先を認識できるように、deadLetterUri
オプションも設定する必要があります。
このテスト など、camel-hawtdb の単体テストでいくつかの例を確認できます。
128.6.3.1. Java DSL での HawtDBAggregationRepository の使用
この例では、集計されたメッセージを target/data/hawtdb.dat
ファイルに保存します。
128.6.3.2. Spring XML での HawtDBAggregationRepository の使用
同じ例ですが、代わりに Spring XML を使用しています。
128.6.4. 依存関係
camel ルートで HawtDB を使用するには、camel-hawtdb に依存関係を追加する必要があります。
Maven を使用する場合は、pom.xml に以下を追加するだけで、バージョン番号を最新かつ最高のリリースに置き換えます (最新バージョンのダウンロードページを参照してください)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-hawtdb</artifactId> <version>2.3.0</version> </dependency>
128.6.5. 関連項目
- Configuring Camel (Camel の設定)
- コンポーネント
- エンドポイント
- スタートガイド
- アグリゲーター
- コンポーネント