Class AsyncCluster

java.lang.Object
com.couchbase.client.java.AsyncCluster

public class AsyncCluster extends Object
The AsyncCluster is the main entry point when connecting to a Couchbase cluster using the async API.

Note that most of the time you want to use the blocking Cluster or the powerful reactive ReactiveCluster API instead. Use this API if you know what you are doing and you want to build low-level, even faster APIs on top.

Most likely you want to start out by using the connect(String, String, String) entry point. For more advanced options you want to use the connect(String, ClusterOptions) method. The entry point that allows overriding the seed nodes (connect(Set, ClusterOptions) is only needed if you run a couchbase cluster at non-standard ports.

When the application shuts down (or the SDK is not needed anymore), you are required to call disconnect(). If you omit this step, the application will terminate (all spawned threads are daemon threads) but any operations or work in-flight will not be able to complete and lead to undesired side-effects. Note that disconnect will also shutdown all associated buckets.

Cluster-level operations like query(String) will not work unless at leas one bucket is opened against a pre 6.5 cluster. If you are using 6.5 or later, you can run cluster-level queries without opening a bucket. All of these operations are lazy, so the SDK will bootstrap in the background and service queries as quickly as possible. This also means that the first operations might be a bit slower until all sockets are opened in the background and the configuration is loaded. If you want to wait explicitly, you can utilize the waitUntilReady(Duration) method before performing your first query.

The SDK will only work against Couchbase Server 5.0 and later, because RBAC (role-based access control) is a first class concept since 3.0 and therefore required.

  • Method Details

    • connect

      public static AsyncCluster connect(String connectionString, String username, String password)
      Connect to a Couchbase cluster with a username and a password as authentication credentials.
      Parameters:
      connectionString - connection string used to locate the Couchbase cluster.
      username - the name of the user with appropriate permissions on the cluster.
      password - the password of the user with appropriate permissions on the cluster.
      Returns:
      the instantiated AsyncCluster.
    • connect

      public static AsyncCluster connect(String connectionString, ClusterOptions options)
      Connect to a Couchbase cluster with a connection string and custom options.
      Parameters:
      connectionString - connection string used to locate the Couchbase cluster.
      options - custom options when creating the cluster.
      Returns:
      the instantiated AsyncCluster.
    • connect

      public static AsyncCluster connect(Set<SeedNode> seedNodes, ClusterOptions options)
      Connect to a Couchbase cluster with a list of seed nodes and custom options.

      Please note that you likely only want to use this method if you need to pass in custom ports for specific seed nodes during bootstrap. Otherwise we recommend relying ont he simpler connect(String, ClusterOptions) method instead.

      Parameters:
      seedNodes - the seed nodes used to connect to the cluster.
      options - custom options when creating the cluster.
      Returns:
      the instantiated AsyncCluster.
    • environment

      public ClusterEnvironment environment()
      Provides access to the configured ClusterEnvironment for this cluster.
    • core

      @Volatile public Core core()
      Provides access to the underlying Core.

      This is advanced API, use with care!

    • couchbaseOps

      @Internal public CoreCouchbaseOps couchbaseOps()
    • httpClient

      @Volatile public AsyncCouchbaseHttpClient httpClient()
      Returns a specialized HTTP client for making requests to the Couchbase Server REST API.
    • users

      public AsyncUserManager users()
      Provides access to the user management services.
    • buckets

      public AsyncBucketManager buckets()
      Provides access to the bucket management services.
    • analyticsIndexes

      public AsyncAnalyticsIndexManager analyticsIndexes()
      Provides access to the Analytics index management services.
    • queryIndexes

      public AsyncQueryIndexManager queryIndexes()
      Provides access to the N1QL index management services.
    • searchIndexes

      public AsyncSearchIndexManager searchIndexes()
      Provides access to the Full Text Search index management services.
    • eventingFunctions

      @Uncommitted public AsyncEventingFunctionManager eventingFunctions()
      Provides access to the eventing function management services.
    • query

      public CompletableFuture<QueryResult> query(String statement)
      Performs a N1QL query with default QueryOptions.
      Parameters:
      statement - the N1QL query statement as a raw string.
      Returns:
      the QueryResult once the response arrives successfully.
    • query

      public CompletableFuture<QueryResult> query(String statement, QueryOptions options)
      Performs a N1QL query with custom QueryOptions.
      Parameters:
      statement - the N1QL query statement as a raw string.
      options - the custom options for this query.
      Returns:
      the QueryResult once the response arrives successfully.
    • analyticsQuery

      public CompletableFuture<AnalyticsResult> analyticsQuery(String statement)
      Performs an Analytics query with default AnalyticsOptions.
      Parameters:
      statement - the Analytics query statement as a raw string.
      Returns:
      the AnalyticsResult once the response arrives successfully.
    • analyticsQuery

      public CompletableFuture<AnalyticsResult> analyticsQuery(String statement, AnalyticsOptions options)
      Performs an Analytics query with custom AnalyticsOptions.
      Parameters:
      statement - the Analytics query statement as a raw string.
      options - the custom options for this analytics query.
      Returns:
      the AnalyticsResult once the response arrives successfully.
    • search

      @Uncommitted public CompletableFuture<SearchResult> search(String indexName, SearchRequest searchRequest)
      Performs a request against the Full Text Search (FTS) service, with default SearchOptions.

      This can be used to perform a traditional FTS query, and/or a vector search.

      This method is for global FTS indexes. For scoped indexes, use AsyncScope instead.

      Parameters:
      searchRequest - the request, in the form of a SearchRequest
      Returns:
      the SearchResult once the response arrives successfully, inside a CompletableFuture
      Throws:
      TimeoutException - if the operation times out before getting a result.
      CouchbaseException - for all other error reasons (acts as a base type and catch-all).
    • search

      @Uncommitted public CompletableFuture<SearchResult> search(String indexName, SearchRequest searchRequest, SearchOptions options)
      Performs a request against the Full Text Search (FTS) service, with custom SearchOptions.

      This can be used to perform a traditional FTS query, and/or a vector search.

      This method is for global FTS indexes. For scoped indexes, use AsyncScope instead.

      Parameters:
      searchRequest - the request, in the form of a SearchRequest
      Returns:
      the SearchResult once the response arrives successfully, inside a CompletableFuture
      Throws:
      TimeoutException - if the operation times out before getting a result.
      CouchbaseException - for all other error reasons (acts as a base type and catch-all).
    • searchQuery

      public CompletableFuture<SearchResult> searchQuery(String indexName, SearchQuery query)
      Performs a Full Text Search (FTS) query with default SearchOptions.

      This method is for global FTS indexes. For scoped indexes, use AsyncScope instead.

      New users should consider the newer search(String, SearchRequest) interface instead, which can do both the traditional FTS SearchQuery that this method performs, and/or can also be used to perform a VectorSearch.

      Parameters:
      query - the query, in the form of a SearchQuery
      Returns:
      the SearchResult once the response arrives successfully, inside a CompletableFuture
    • searchQuery

      public CompletableFuture<SearchResult> searchQuery(String indexName, SearchQuery query, SearchOptions options)
      Performs a Full Text Search (FTS) query with custom SearchOptions.

      New users should consider the newer search(String, SearchRequest) interface instead, which can do both the traditional FTS SearchQuery that this method performs, and/or can also be used to perform a VectorSearch.

      Parameters:
      query - the query, in the form of a SearchQuery
      options - the custom options for this query.
      Returns:
      the SearchResult once the response arrives successfully, inside a CompletableFuture
    • bucket

      public AsyncBucket bucket(String bucketName)
      Opens a AsyncBucket with the given name.
      Parameters:
      bucketName - the name of the bucket to open.
      Returns:
      a AsyncBucket once opened.
    • disconnect

      public CompletableFuture<Void> disconnect()
      Performs a non-reversible disconnect of this AsyncCluster.

      If this method is used, the default disconnect timeout on the environment is used. Please use the companion overload (disconnect(Duration) if you want to provide a custom duration.

      If a custom ClusterEnvironment has been passed in during connect, it is VERY important to shut it down after calling this method. This will prevent any in-flight tasks to be stopped prematurely.

    • disconnect

      public CompletableFuture<Void> disconnect(Duration timeout)
      Performs a non-reversible disconnect of this AsyncCluster.

      If a custom ClusterEnvironment has been passed in during connect, it is VERY important to shut it down after calling this method. This will prevent any in-flight tasks to be stopped prematurely.

      Parameters:
      timeout - overriding the default disconnect timeout if needed.
    • diagnostics

      public CompletableFuture<DiagnosticsResult> diagnostics()
      Runs a diagnostic report on the current state of the cluster from the SDKs point of view.

      Please note that it does not perform any I/O to do this, it will only use the current known state of the cluster to assemble the report (so, if for example no N1QL query has been run the socket pool might be empty and as result not show up in the report).

      Returns:
      the DiagnosticsResult once complete.
    • diagnostics

      Runs a diagnostic report with custom options on the current state of the cluster from the SDKs point of view.

      Please note that it does not perform any I/O to do this, it will only use the current known state of the cluster to assemble the report (so, if for example no N1QL query has been run the socket pool might be empty and as result not show up in the report).

      Parameters:
      options - options that allow to customize the report.
      Returns:
      the DiagnosticsResult once complete.
    • ping

      public CompletableFuture<PingResult> ping()
      Performs application-level ping requests against services in the couchbase cluster.

      Note that this operation performs active I/O against services and endpoints to assess their health. If you do not wish to perform I/O, consider using the diagnostics() instead. You can also combine the functionality of both APIs as needed, which is waitUntilReady(Duration) is doing in its implementation as well.

      Returns:
      the PingResult once complete.
    • ping

      public CompletableFuture<PingResult> ping(PingOptions options)
      Performs application-level ping requests with custom options against services in the couchbase cluster.

      Note that this operation performs active I/O against services and endpoints to assess their health. If you do not wish to perform I/O, consider using the diagnostics(DiagnosticsOptions) instead. You can also combine the functionality of both APIs as needed, which is waitUntilReady(Duration) is doing in its implementation as well.

      Returns:
      the PingResult once complete.
    • waitUntilReady

      public CompletableFuture<Void> waitUntilReady(Duration timeout)
      Waits until the desired ClusterState is reached.

      This method will wait until either the cluster state is "online", or the timeout is reached. Since the SDK is bootstrapping lazily, this method allows to eagerly check during bootstrap if all of the services are online and usable before moving on.

      Parameters:
      timeout - the maximum time to wait until readiness.
      Returns:
      a completable future that completes either once ready or timeout.
    • waitUntilReady

      public CompletableFuture<Void> waitUntilReady(Duration timeout, WaitUntilReadyOptions options)
      Waits until the desired ClusterState is reached.

      This method will wait until either the cluster state is "online" by default, or the timeout is reached. Since the SDK is bootstrapping lazily, this method allows to eagerly check during bootstrap if all of the services are online and usable before moving on. You can tune the properties through WaitUntilReadyOptions.

      Parameters:
      timeout - the maximum time to wait until readiness.
      options - the options to customize the readiness waiting.
      Returns:
      a completable future that completes either once ready or timeout.