インターフェース ReactiveSession
- すべてのスーパーインターフェース:
AutoCloseableSE
,CloseableSE
- すべての既知の実装クラス:
DefaultBridgedReactiveSession
,ObservableReactiveSession
ReactiveSession
はクエリを実行し、リアクティブスタイルでステートメントを準備し、Mono
と Flux
でラップされた結果を返します。各セッションは、クラスターノードへの複数の接続を維持し、各クエリに使用するノードを選択するポリシー (デフォルトではクラスターのすべてのノードでラウンドロビン) を提供し、失敗したクエリの再試行を処理します (適切な場合)。
セッションインスタンスはスレッドセーフであり、通常はアプリケーションごとに 1 つのインスタンスで十分です。特定のセッションは一度に 1 つのキースペースにのみ「ログイン」できるため (「ログイン」されるキースペースは、完全修飾テーブル名を明示的に使用しないクエリで使用されるキースペースです)、使用するキースペースごとに 1 つのセッションを作成するのが合理的です。ただし、複数のキースペースをクエリする場合、これは不要です。これは、クエリで完全修飾テーブル名を持つ単一のセッションを常に使用できるためです。
- 導入:
- 2.0
- 作成者:
- Mark Paluch
- 関連事項:
Publisher
Mono
ReactiveResultSet
メソッドのサマリー
修飾子と型メソッド説明void
close()
このセッションインスタンスのシャットダウンを開始し、シャットダウンが完了するまでブロックします。reactor.core.publisher.Mono<ReactiveResultSet>
execute
(com.datastax.oss.driver.api.core.cql.Statement<?> statement) 提供されたクエリを実行します。reactor.core.publisher.Mono<ReactiveResultSet>
提供されたクエリを実行します。reactor.core.publisher.Mono<ReactiveResultSet>
指定された値を使用して、指定されたクエリを実行します。reactor.core.publisher.Mono<ReactiveResultSet>
指定された名前付き値を使用して、指定されたクエリを実行します。com.datastax.oss.driver.api.core.context.DriverContext
このドライバーインスタンスで使用されるすべてのポリシーへのアクセスを提供するコンテキストを返します。OptionalSE<com.datastax.oss.driver.api.core.CqlIdentifier>
このセッションが現在接続されているキースペース、またはこのセッションがどのキースペースにも接続されていない場合はOptional.empty()
です。com.datastax.oss.driver.api.core.metadata.Metadata
Cassandra クラスターのトポロジとスキーマメタデータのスナップショットを返します。boolean
isClosed()
このセッションインスタンスが閉じられているかどうか。reactor.core.publisher.Mono<com.datastax.oss.driver.api.core.cql.PreparedStatement>
prepare
(com.datastax.oss.driver.api.core.cql.SimpleStatement statement) 提供されたクエリを準備します。reactor.core.publisher.Mono<com.datastax.oss.driver.api.core.cql.PreparedStatement>
指定されたクエリ文字列を準備します。
メソッドの詳細
getMetadata
com.datastax.oss.driver.api.core.metadata.Metadata getMetadata()Cassandra クラスターのトポロジとスキーマメタデータのスナップショットを返します。アトミック更新を提供するために、このメソッドは不変のオブジェクトを返します。つまり、特定のインスタンスに含まれるノードリスト、トークンマップ、スキーマは常に互いに一貫性を保ちます (ただし、
Node
自体は不変ではないことに注意してください。そのプロパティの一部 (特にNode.getState()
) は動的に更新されます)。上記の結果から、メタデータの最新のビューが必要になるたびに、このメソッドを呼び出す必要があります。これは凍結されたスナップショットであり、時間の経過とともに古くなるため、一度呼び出して結果を保存しないでください。
メタデータのリフレッシュによってイベント (ノードの追加 / 削除、スキーマイベントなど) がトリガーされた場合、これらのイベントを受信するまでにメタデータの新しいバージョンが表示されることが保証されます。
- 戻り値:
null
になることはありませんが、構成でメタデータが無効になっている場合は空になる可能性があります。- 導入:
- 3.2.2
getKeyspace
OptionalSE<com.datastax.oss.driver.api.core.CqlIdentifier> getKeyspace()このセッションが現在接続されているキースペース、またはこのセッションがどのキースペースにも接続されていない場合はOptional.empty()
です。これを設定するには、セッションを初期化する前(構成の
session-keyspace
オプションまたはSessionBuilder.withKeyspace(CqlIdentifier)
を使用)または実行時に、クライアントがキースペースを変更するリクエスト(CQLUSE
クエリなど)を発行する場合の 2 つの方法があります。この 2 番目の方法は、古いキースペースを期待する他のリクエストが同時に実行される可能性があるため、本質的に安全ではないことに注意してください。些細なケース(リクエストが同時に実行されない cqlsh スタイルのプログラムなど)を除いて、この方法は強く推奨されません。- 導入:
- 3.2.2
isClosed
boolean isClosed()このセッションインスタンスが閉じられているかどうか。このメソッドは、このセッションのクローズが開始されるとすぐに true を返しますが、クローズが完了したことを保証するものではないことに注意してください。クローズが完了したことを保証したい場合は、
close()
を呼び出して、それが返されるまで待機します (または、非常に短いタイムアウトでcloseAsync()
の get メソッドを呼び出し、タイムアウトしないことを確認します)。- 戻り値:
- このセッションインスタンスが閉じられている場合は
true
、それ以外の場合はfalse
です。
getContext
com.datastax.oss.driver.api.core.context.DriverContext getContext()このドライバーインスタンスで使用されるすべてのポリシーへのアクセスを提供するコンテキストを返します。- 戻り値:
- このドライバーインスタンスで使用されるすべてのポリシーへのアクセスを提供するコンテキスト。
execute
提供されたクエリを実行します。これは
execute(new SimpleStatement(query))
の便利なメソッドです。- パラメーター:
query
- 実行する CQL クエリ。- 戻り値:
- クエリの結果。その結果は null になることはありませんが、空になることがあります (SELECT 以外のクエリの場合は空になります)。
execute
指定された値を使用して、指定されたクエリを実行します。これは
execute(new SimpleStatement(query, values))
の便利なメソッドです。- パラメーター:
query
- 実行する CQL クエリ。values
-query
の実行に必要な値。詳細についてはSimpleStatement.newInstance(String, Object...)
を参照してください。- 戻り値:
- クエリの結果。その結果は null になることはありませんが、空になることがあります (SELECT 以外のクエリの場合は空になります)。
execute
reactor.core.publisher.Mono<ReactiveResultSet> execute(StringSE query, MapSE<StringSE, ObjectSE> values) 指定された名前付き値を使用して、指定されたクエリを実行します。これは
execute(new SimpleStatement(query, values))
の便利なメソッドです。- パラメーター:
query
- 実行する CQL クエリ。values
-query
の実行に必要な値。詳細についてはSimpleStatement.newInstance(String, Map)
を参照してください。- 戻り値:
- クエリの結果。その結果は null になることはありませんが、空になることがあります (SELECT 以外のクエリの場合は空になります)。
execute
reactor.core.publisher.Mono<ReactiveResultSet> execute(com.datastax.oss.driver.api.core.cql.Statement<?> statement) 提供されたクエリを実行します。このメソッドは、データベースから少なくとも何らかの結果が受信されるまでブロックします。ただし、SELECT クエリの場合、結果が完全に受信されたことは保証されません。ただし、データベースから何らかのレスポンスが受信されたことは保証され、特に、リクエストが無効な場合は、このメソッドによって例外がスローされることが保証されます。
- パラメーター:
statement
- 実行する CQL クエリ (任意のStatement
にすることができます)。- 戻り値:
- クエリの結果。その結果は null になることはありませんが、空になることがあります (SELECT 以外のクエリの場合は空になります)。
prepare
reactor.core.publisher.Mono<com.datastax.oss.driver.api.core.cql.PreparedStatement> prepare(StringSE query) 指定されたクエリ文字列を準備します。- パラメーター:
query
- 準備する CQL クエリ文字列- 戻り値:
query
に対応する準備されたステートメント。
prepare
reactor.core.publisher.Mono<com.datastax.oss.driver.api.core.cql.PreparedStatement> prepare(com.datastax.oss.driver.api.core.cql.SimpleStatement statement) 提供されたクエリを準備します。このメソッドは
prepare(String)
のように動作しますが、結果のPreparedStatement
はstatement
に設定されたクエリプロパティを継承することに注意してください。具体的には、次のコードでは次のようになります。Statement toPrepare = SimpleStatement.newInstance("SELECT * FROM test WHERE k=?") .setConsistencyLevel(ConsistencyLevel.QUORUM); PreparedStatement prepared = session.prepare(toPrepare); session.execute(prepared.bind("someValue"));
最終的な実行はクォーラム一貫性で実行されます。同じ CQL ステートメントが複数回準備された場合、このメソッドへのすべての呼び出しは同じ
PreparedStatement
オブジェクトを返しますが、メソッドは準備されたStatement
のプロパティをこのオブジェクトに適用することに注意してください。- パラメーター:
statement
- 準備する声明- 戻り値:
statement
に対応する準備されたステートメント。- 例外:
IllegalArgumentExceptionSE
-statement.getValues() != null
の場合 (準備されたステートメントを実行するための値は、PreparedStatement.bind(java.lang.Object...)
メソッドまたは対応するBoundStatement
を通じて準備後に提供される必要があります)。
close
void close()このセッションインスタンスのシャットダウンを開始し、シャットダウンが完了するまでブロックします。- 次で指定:
- インターフェース
AutoCloseableSE
のclose
- 次で指定:
- インターフェース
CloseableSE
のclose