第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 に追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cassandraql</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

エンドポイントは Cassandra 接続を開始するか、既存の接続を使用できます。
Expand
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 エンドポイントに指定します。

エンドポイントオプション

Expand
オプション デフォルト 説明
clusterName
Cluster name
username and password
セッション認証
cql
CQL クエリー。メッセージヘッダーで上書きできます。
consistencyLevel
ANY, ONE, TWO, QUORUM, LOCAL_QUORUM...
prepareStatements true 準備済みステートメント(デフォルト)を使用する(デフォルト)かどうか
resultSetConversionStrategy
ALL
ResultSet がメッセージボディーに変換および変換する方法 ALLONELIMIT_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> resultSetConversionStrategyALL または の場合 LIMIT_[0-9]+
  • single Row if resultSetConversionStrategy ONE
  • resultSetConversionStrategy がカスタム実装である場合、それ以外 ResultSetConversionStrategy

リポジトリー

Cassandra は、べき等性と集約 EIP のメッセージキーまたはメッセージを格納するために使用できます。
Cassandra はキューイングのユースケースに最適なツールではない場合があります。Cassandra のアンチパターンのキューとデータセットなどのキューをお読みください。これらのテーブルには LeveledCompaction および小さい GC grace 設定を使用し、廃棄した行をすぐに削除できるようにすることが推奨されます。

Idempotent リポジトリー

NamedCassandraIdempotentRepository は、以下のような Cassandra テーブルにメッセージキーを保存します。
CREATE TABLE CAMEL_IDEMPOTENT (
  NAME varchar,   -- Repository name
  KEY varchar,    -- Message key
  PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
  AND gc_grace_seconds = 86400;
Copy to Clipboard Toggle word wrap
このリポジトリーの実装では、軽量のトランザクション(比較およびセットとも呼ばれます)を使用し、Cassandra 2.0.7+ が必要です。
または、CassandraIdempotentRepository には NAME 列がなく、別のデータモデルを使用するように拡張することもできます。
Expand
オプション デフォルト 説明
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 テーブルに保存します。
CREATE TABLE CAMEL_AGGREGATION (
  NAME varchar,        -- Repository name
  KEY varchar,         -- Correlation id
  EXCHANGE_ID varchar, -- Exchange id
  EXCHANGE blob,       -- Serialized exchange
  PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
  AND gc_grace_seconds = 86400;
Copy to Clipboard Toggle word wrap
または、CassandraAggregationRepository には NAME 列がなく、別のデータモデルを使用するように拡張することもできます。
Expand
オプション デフォルト 説明
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
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat