第20章 Cassandra
Camel Cassandra コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.15 以降で利用可能
Apache Cassandra は、コモディティーハードウェア上で大量のデータを処理するように設計されたオープンソースの NoSQL データベースです。Amazon の DynamoDB と同様に、Cassandra にはピアツーピアおよびマスターなしのアーキテクチャーがあり、単一障害点を回避し、高可用性を確保します。Google の BigTable と同様に、CQL と呼ばれる SQL のような API からアクセス可能な列ファミリーを使用して Cassandra データを構築します。
このコンポーネントは、(Trift API ではなく) CQL3 API を使用して Cassandra 2.0+ を統合することを目指しています。これは、DataStax が提供する Cassandra Java Driver に基づいています。
Maven ユーザーは、以下の依存関係を
pom.xml に追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントは Cassandra 接続を開始するか、既存の接続を使用できます。
| URI | 説明 |
|---|---|
cql:localhost/keyspace
|
単一のホスト、デフォルトポート(通常はテスト用) |
cql:host1,host2/keyspace
|
マルチホスト、デフォルトポート |
cql:host1,host2:9042/keyspace
|
マルチホスト、カスタムポート |
cql:host1,host2
|
デフォルトのポートおよびキースペース |
cql:bean:sessionRef
|
提供されるセッション参照 |
cql:bean:clusterRef/keyspace
|
提供されるクラスター参照 |
Cassandra 接続(SSL オプション、プーリングオプション、負荷分散ポリシー、再試行ポリシー、再接続ポリシー)を微調整するには、独自のクラスターインスタンスを作成し、Camel エンドポイントに指定します。
エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| オプション | デフォルト | 説明 |
|---|---|---|
clusterName
|
Cluster name
|
|
username and password
|
セッション認証
|
|
cql
|
CQL クエリー。メッセージヘッダーで上書きできます。
|
|
consistencyLevel
|
ANY, ONE, TWO, QUORUM, LOCAL_QUORUM...
|
|
prepareStatements
|
true
|
準備済みステートメント(デフォルト)を使用する(デフォルト)かどうか |
resultSetConversionStrategy
|
ALL
|
ResultSet がメッセージボディーに変換および変換する方法
ALL、ONE、LIMIT_10、および LIMIT_100...
|
メッセージ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
受信メッセージ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel Cassandra エンドポイントは、クエリーパラメーターとして CQL ステートメントにバインドされる単純なオブジェクト(
Object または Object[] または Collection<Object>)があることを想定しています。メッセージボディーが null または空の場合、CQL クエリーはバインディングパラメーターなしで実行されます。
ヘッダー:
CamelCqlQuery(オプション、String): プレーンな文字列として、またはRegularStatementを使用してビルドした CQL クエリー。QueryBuilder
送信メッセージ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel Cassandra エンドポイントは、
resultSetConversionStrategy に応じて 1 つまたは複数の Cassandra Row オブジェクトを生成します。
List<Row>resultSetConversionStrategyがALLまたは の場合LIMIT_[0-9]+- single
RowifresultSetConversionStrategyONE resultSetConversionStrategyがカスタム実装である場合、それ以外ResultSetConversionStrategy
リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Cassandra は、べき等性と集約 EIP のメッセージキーまたはメッセージを格納するために使用できます。
Cassandra はキューイングのユースケースに最適なツールではない場合があります。Cassandra のアンチパターンのキューとデータセットなどのキューをお読みください。これらのテーブルには LeveledCompaction および小さい GC grace 設定を使用し、廃棄した行をすぐに削除できるようにすることが推奨されます。
Idempotent リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
NamedCassandraIdempotentRepository は、以下のような Cassandra テーブルにメッセージキーを保存します。
このリポジトリーの実装では、軽量のトランザクション(比較およびセットとも呼ばれます)を使用し、Cassandra 2.0.7+ が必要です。
または、
CassandraIdempotentRepository には NAME 列がなく、別のデータモデルを使用するように拡張することもできます。
| オプション | デフォルト | 説明 |
|---|---|---|
table
|
CAMEL_IDEMPOTENT
|
テーブル名 |
pkColumns
|
NAME, KEY
|
プライマリーキー列 |
name
|
Repository name, value used for NAME column (リポジトリー名、列に使用される値)
|
|
ttl
|
キーの有効期間 | |
writeConsistencyLevel
|
キーの挿入/削除に使用する一貫性レベル: ANY, ONE, TWO, QUORUM, ----------|-----… LOCAL_QUORUM
|
|
readConsistencyLevel
|
キーの読み取り/チェックに使用する一貫性レベル: ONE, TWO, QUORUM, LOCAL_QUORUM…
|
集約リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
NamedCassandraAggregationRepository は、以下のように相関キーでエクスチェンジを Cassandra テーブルに保存します。
または、
CassandraAggregationRepository には NAME 列がなく、別のデータモデルを使用するように拡張することもできます。
| オプション | デフォルト | 説明 |
|---|---|---|
table
|
CAMEL_AGGREGATION
|
テーブル名 |
pkColumns
|
NAME,KEY
|
プライマリーキー列 |
exchangeIdColumn
|
EXCHANGE_ID
|
エクスチェンジ ID 列 |
exchangeColumn
|
EXCHANGE
|
コンテンツ列の交換 |
name
|
Repository name, value used for NAME column (リポジトリー名、列に使用される値)
|
|
ttl
|
存続時間の交換 | |
writeConsistencyLevel
|
交換の挿入/削除に使用する一貫性レベル: ANY, ONE, TWO, QUORUM, ----------|-----… LOCAL_QUORUM
|
|
readConsistencyLevel
|
交換の読み取り/チェックに使用する一貫性レベル: ONE, TWO, QUORUM, LOCAL_QUORUM…
|