202.7. LevelDB


Camel 2.10 以降で利用可能

Leveldb は、非常に軽量で組み込み可能なキー値データベースです。Camel と一緒に、Aggregator などのさまざまな Camel 機能の永続的なサポートを提供できます。

それが提供する現在の機能:

  • LevelDBAggregationRepository

202.7.1. LevelDBAggregationRepository の使用

LevelDBAggregationRepositoryAggregationRepository であり、その場で集約されたメッセージを永続化します。デフォルトのアグリゲーターはメモリー内のみの AggregationRepository を使用するため、これによりメッセージが失われないことが保証されます。

以下のオプションがあります。

オプションタイプ説明

repositoryName

String

必須のリポジトリー名。複数のリポジトリーで共有 LevelDBFile を使用できるようにします。

persistentFileName

String

永続ストレージのファイル名。起動時にファイルが存在しない場合は、新しいファイルが作成されます。

levelDBFile

LevelDBFile

既存の設定済み org.apache.camel.component.leveldb.LevelDBFile インスタンスを使用します。

sync

boolean

Camel 2.12: LevelDBFile が書き込み時に同期するかどうか。デフォルトは false です。書き込み時に同期することにより、すべての書き込みがディスクにスプールされるのを常に待機するため、更新が失われることはありません。非同期書き込みと同期書き込みの詳細については、LevelDB のドキュメント を参照してください。

returnOldExchange

boolean

古い既存の Exchange が存在する場合、get 操作でそれを返すかどうか。デフォルトでは、集約時に古いエクスチェンジは必要ないため、最適化するにはこのオプションは false です。

useRecovery

boolean

リカバリーが有効かどうか。このオプションはデフォルトで true です。Camel Aggregator の自動回復を有効にすると、集約されたエクスチェンジに失敗し、それらが再送信されます。

recoveryInterval

long

回復が有効になっている場合、x 回ごとにバックグラウンドタスクが実行され、失敗した交換をスキャンして回復し、再送信します。デフォルトでは、この間隔は 5000 ミリ秒です。

maximumRedeliveries

int

回復されたエクスチェンジの再配信試行の最大回数を制限できます。有効にすると、すべての再配信の試行が失敗した場合、エクスチェンジはデッドレターチャネルに移動されます。デフォルトでは、このオプションは無効となっています。このオプションを使用する場合は、deadLetterUri オプションも指定する必要があります。

deadLetterUri

String

枯渇した回復済みエクスチェンジが移動されるデッドレターチャネルのエンドポイント uri。このオプションを使用する場合、maximumRedeliveries オプションも指定する必要があります。

repositoryName オプションを指定する必要があります。次に、persistentFileName または levelDBFile を指定する必要があります。

202.7.2. 持続時に保持されるもの

LevelDBAggregationRepository は、Serializable な互換性のあるメッセージ本文のデータ型のみを保持します。メッセージヘッダーは、プリミティブ/文字列/数字/などである必要があります。データ型がそのような型でない場合は削除され、WARN がログに記録されます。また、Message ボディーと Message ヘッダーのみを保持します。Exchange プロパティーは保持され ません

202.7.3. 復元

LevelDBAggregationRepository はデフォルトで、失敗した Exchange を回復します。これは、永続ストア内の失敗したエクスチェンジをスキャンするバックグラウンドタスクを持つことによって行われます。checkInterval オプションを使用して、このタスクの実行頻度を設定できます。回復はトランザクションとして機能するため、Camel は失敗したエクスチェンジを回復して再配信しようとします。回復されたことが判明したエクスチェンジは、永続ストアから復元され、再送信され、再度送信されます。

次のヘッダーは、エクスチェンジが回復または再配信されるときに設定されます。

ヘッダータイプ説明

Exchange.REDELIVERED

Boolean

エクスチェンジが再配信されていることを示すために true に設定されます。

Exchange.REDELIVERY_COUNTER

Integer

1 から始まる再配信の試行。

エクスチェンジが正常に処理された場合にのみ、AggregationRepositoryconfirm メソッドが呼び出されたときに完了としてマークされます。これは、同じエクスチェンジが再び失敗した場合、成功するまで再試行されることを意味します。

オプション 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
  • コンポーネント
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.