インターフェース ReactiveSession

すべてのスーパーインターフェース:
AutoCloseableSECloseableSE
すべての既知の実装クラス:
DefaultBridgedReactiveSessionObservableReactiveSession

public interface ReactiveSession extends CloseableSE
セッションは Cassandra クラスターへの接続を保持し、クエリを実行できるようにします。ReactiveSession はクエリを実行し、リアクティブスタイルでステートメントを準備し、Mono と Flux でラップされた結果を返します。

各セッションは、クラスターノードへの複数の接続を維持し、各クエリに使用するノードを選択するポリシー (デフォルトではクラスターのすべてのノードでラウンドロビン) を提供し、失敗したクエリの再試行を処理します (適切な場合)。

セッションインスタンスはスレッドセーフであり、通常はアプリケーションごとに 1 つのインスタンスで十分です。特定のセッションは一度に 1 つのキースペースにのみ「ログイン」できるため (「ログイン」されるキースペースは、完全修飾テーブル名を明示的に使用しないクエリで使用されるキースペースです)、使用するキースペースごとに 1 つのセッションを作成するのが合理的です。ただし、複数のキースペースをクエリする場合、これは不要です。これは、クエリで完全修飾テーブル名を持つ単一のセッションを常に使用できるためです。

導入:
2.0
作成者:
Mark Paluch
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    このセッションインスタンスのシャットダウンを開始し、シャットダウンが完了するまでブロックします。
    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>
    execute(StringSE query, ObjectSE... values)
    指定された値を使用して、指定されたクエリを実行します。
    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
    このセッションインスタンスが閉じられているかどうか。
    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) を使用)または実行時に、クライアントがキースペースを変更するリクエスト(CQL USE クエリなど)を発行する場合の 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

      reactor.core.publisher.Mono<ReactiveResultSet> execute(StringSE query)
      提供されたクエリを実行します。

      これは execute(new SimpleStatement(query)) の便利なメソッドです。

      パラメーター:
      query - 実行する CQL クエリ。
      戻り値:
      クエリの結果。その結果は null になることはありませんが、空になることがあります (SELECT 以外のクエリの場合は空になります)。
    • execute

      reactor.core.publisher.Mono<ReactiveResultSet> execute(StringSE query, ObjectSE... values)
      指定された値を使用して、指定されたクエリを実行します。

      これは 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()
      このセッションインスタンスのシャットダウンを開始し、シャットダウンが完了するまでブロックします。
      次で指定:
      インターフェース AutoCloseableSEclose 
      次で指定:
      インターフェース CloseableSEclose