Package com.couchbase.client.java
Class CouchbaseCluster
- java.lang.Object
-
- com.couchbase.client.java.CouchbaseCluster
-
- All Implemented Interfaces:
Cluster
public class CouchbaseCluster extends Object implements Cluster
Main synchronous entry point to a Couchbase Cluster. TheCouchbaseClusterobject is the main entry point when connecting to a remote Couchbase Server cluster. It will either create a bundled stateful environment or accept one passed in, in case the application needs to connect to more clusters at the same time. It provides cluster level management facilities through theClusterManagerclass, but mainly provides facilities to openBuckets where the actual CRUD and query operations are performed against. The simplest way to initialize aCouchbaseClusteris by using thecreate()factory method. This is only recommended during development, since it will connect to a Cluster residing on `127.0.0.1`. ```java Cluster cluster = CouchbaseCluster.create(); ``` In production, it is recommended that at least two or three hosts are passed in, so in case one fails the SDK is able to bootstrap through alternative options. ```java Cluster cluster = CouchbaseCluster.create( "192.168.56.101", "192.168.56.102", "192.168.56.103" ); ``` Please make sure that these hosts are part of the same cluster, otherwise non-deterministic connecting behaviour will arise (the SDK may connect to the wrong cluster). If you need to customizeCouchbaseEnvironmentoptions or connect to multiple clusters, it is recommended to explicitly create one and then reuse it. Keep in mind that the cluster will not shut down the environment if it didn't create it, so this is up to the caller. ```java CouchbaseEnvironment environment = DefaultCouchbaseEnvironment.builder() .kvTimeout(3000) // change the default kv timeout .build(); Cluster cluster = CouchbaseCluster.create(environment, "192.168.56.101", "192.168.56.102"); Bucket bucket = cluster.openBucket("travel-sample"); // Perform your work here... cluster.disconnect(); environment.shutdownAsync().toBlocking().single(); ```- Since:
- 2.0.0
- Author:
- Michael Nitschinger, Simon Baslé
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description AsyncClusterasync()Returns a reference to the underlying async cluster.CouchbaseClusterauthenticate(Authenticator auth)Sets theAuthenticatorto use when credentials are needed for an operation but no explicit credentials are provided.CouchbaseClusterauthenticate(String username, String password)Shortcut method to directly authenticate with a username and a password.Authenticatorauthenticator()Get theAuthenticatorcurrently used when credentials are needed for an operation, but no explicit credentials are provided.ClusterManagerclusterManager()Provides access to theClusterManagerto perform cluster-wide operations, using the credentials set through the configuredAuthenticator(seeCluster.authenticate(Authenticator)), for theCredentialContext.CLUSTER_MANAGEMENTcontext.ClusterManagerclusterManager(String username, String password)Provides access to theClusterManagerto perform cluster-wide operations.ClusterFacadecore()Returns the underlying "core-io" library through itsClusterFacade.static CouchbaseClustercreate()Creates a newCouchbaseClusterreference against theCouchbaseAsyncCluster.DEFAULT_HOST.static CouchbaseClustercreate(CouchbaseEnvironment environment)Creates a newCouchbaseClusterreference against theCouchbaseAsyncCluster.DEFAULT_HOST.static CouchbaseClustercreate(CouchbaseEnvironment environment, String... nodes)Creates a newCouchbaseClusterreference against the nodes passed in.static CouchbaseClustercreate(CouchbaseEnvironment environment, List<String> nodes)Creates a newCouchbaseClusterreference against the nodes passed in.static CouchbaseClustercreate(String... nodes)Creates a newCouchbaseClusterreference against the nodes passed in.static CouchbaseClustercreate(List<String> nodes)Creates a newCouchbaseClusterreference against the nodes passed in.DiagnosticsReportdiagnostics()Provides a simple health check which allows insight into the current state of services and endpoints.DiagnosticsReportdiagnostics(String reportId)Provides a simple health check which allows insight into the current state of services and endpoints.Booleandisconnect()Disconnects form all open buckets and shuts down theCouchbaseEnvironmentif it is the exclusive owner with the default disconnect timeout.Booleandisconnect(long timeout, TimeUnit timeUnit)Disconnects form all open buckets and shuts down theCouchbaseEnvironmentif it is the exclusive owner with a custom timeout.static CouchbaseClusterfromConnectionString(CouchbaseEnvironment environment, String connectionString)Creates a newCouchbaseClusterreference using the connection string.static CouchbaseClusterfromConnectionString(String connectionString)Creates a newCouchbaseClusterreference using the connection string.BucketopenBucket()Opens the default bucket with an empty password with the default connect timeout.BucketopenBucket(long timeout, TimeUnit timeUnit)Opens the default bucket with an empty password with a custom timeout.BucketopenBucket(String name)Opens the bucket with the given name, using the default timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used.BucketopenBucket(String name, long timeout, TimeUnit timeUnit)Opens the bucket with the given name, using a custom timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used.BucketopenBucket(String name, String password)Opens a bucket identified by its name and password with the default connect timeout.BucketopenBucket(String name, String password, long timeout, TimeUnit timeUnit)Opens a bucket identified by its name and password with a custom timeout.BucketopenBucket(String name, String password, List<Transcoder<? extends Document,?>> transcoders)Opens a bucket identified by its name and password with custom transcoders and with the default connect timeout.BucketopenBucket(String name, String password, List<Transcoder<? extends Document,?>> transcoders, long timeout, TimeUnit timeUnit)Opens a bucket identified by its name and password with custom transcoders and with a custom timeout.BucketopenBucket(String name, List<Transcoder<? extends Document,?>> transcoders)Opens the bucket with the given name, using the default timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used.BucketopenBucket(String name, List<Transcoder<? extends Document,?>> transcoders, long timeout, TimeUnit timeUnit)Opens the bucket with the given name, using a custom timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used.N1qlQueryResultquery(N1qlQuery query)Synchronously perform a N1QL query that can span multiple buckets, with the defaulttimeout.N1qlQueryResultquery(N1qlQuery query, long timeout, TimeUnit timeUnit)Synchronously perform a N1QL query that can span multiple buckets, with a custom timeout.
-
-
-
Method Detail
-
create
public static CouchbaseCluster create()
Creates a newCouchbaseClusterreference against theCouchbaseAsyncCluster.DEFAULT_HOST. **Note:** It is recommended to use this method only during development, since it does not allow you to pass in hostnames when connecting to a remote cluster. Please usecreate(String...)or similar instead. TheCouchbaseEnvironmentwill be automatically created and its lifecycle managed.- Returns:
- a new
CouchbaseClusterreference.
-
create
public static CouchbaseCluster create(CouchbaseEnvironment environment)
Creates a newCouchbaseClusterreference against theCouchbaseAsyncCluster.DEFAULT_HOST. **Note:** It is recommended to use this method only during development, since it does not allow you to pass in hostnames when connecting to a remote cluster. Please usecreate(String...)or similar instead.- Parameters:
environment- the custom environment to use for this cluster reference.- Returns:
- a new
CouchbaseClusterreference.
-
create
public static CouchbaseCluster create(String... nodes)
Creates a newCouchbaseClusterreference against the nodes passed in. TheCouchbaseEnvironmentwill be automatically created and its lifecycle managed.- Parameters:
nodes- the list of nodes to use when connecting to the cluster reference.- Returns:
- a new
CouchbaseClusterreference.
-
create
public static CouchbaseCluster create(List<String> nodes)
Creates a newCouchbaseClusterreference against the nodes passed in. TheCouchbaseEnvironmentwill be automatically created and its lifecycle managed.- Parameters:
nodes- the list of nodes to use when connecting to the cluster reference.- Returns:
- a new
CouchbaseClusterreference.
-
create
public static CouchbaseCluster create(CouchbaseEnvironment environment, String... nodes)
Creates a newCouchbaseClusterreference against the nodes passed in.- Parameters:
environment- the custom environment to use for this cluster reference.nodes- the list of nodes to use when connecting to the cluster reference.- Returns:
- a new
CouchbaseClusterreference.
-
create
public static CouchbaseCluster create(CouchbaseEnvironment environment, List<String> nodes)
Creates a newCouchbaseClusterreference against the nodes passed in.- Parameters:
environment- the custom environment to use for this cluster reference.nodes- the list of nodes to use when connecting to the cluster reference.- Returns:
- a new
CouchbaseClusterreference.
-
fromConnectionString
public static CouchbaseCluster fromConnectionString(String connectionString)
Creates a newCouchbaseClusterreference using the connection string. TheCouchbaseEnvironmentwill be automatically created and its lifecycle managed.- Parameters:
connectionString- the connection string to identify the remote cluster.- Returns:
- a new
CouchbaseClusterreference.
-
fromConnectionString
public static CouchbaseCluster fromConnectionString(CouchbaseEnvironment environment, String connectionString)
Creates a newCouchbaseClusterreference using the connection string.- Parameters:
environment- the custom environment to use for this cluster reference.connectionString- the connection string to identify the remote cluster.- Returns:
- a new
CouchbaseClusterreference.
-
async
public AsyncCluster async()
Description copied from interface:ClusterReturns a reference to the underlying async cluster.
-
openBucket
public Bucket openBucket()
Description copied from interface:ClusterOpens the default bucket with an empty password with the default connect timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceCluster- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterOpens the default bucket with an empty password with a custom timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceCluster- Parameters:
timeout- the custom timeout.timeUnit- the time unit for the custom timeout.- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name)
Description copied from interface:ClusterOpens the bucket with the given name, using the default timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed. -AuthenticatorException: If more than one credentials was returned by the Authenticator for this bucket.- Specified by:
openBucketin interfaceCluster- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterOpens the bucket with the given name, using a custom timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed. -AuthenticatorException: If more than one credentials was returned by the Authenticator for this bucket.- Specified by:
openBucketin interfaceClustertimeout- the custom timeout.timeUnit- the time unit for the custom timeout.- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, List<Transcoder<? extends Document,?>> transcoders)
Description copied from interface:ClusterOpens the bucket with the given name, using the default timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed. -AuthenticatorException: If more than one credentials was returned by the Authenticator for this bucket.- Specified by:
openBucketin interfaceCluster- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, List<Transcoder<? extends Document,?>> transcoders, long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterOpens the bucket with the given name, using a custom timeout and the password from theAuthenticatorIf no credential context can be found for the bucket when usingClassicAuthenticator, the old behavior of defaulting to an empty password is used. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed. -AuthenticatorException: If more than one credentials was returned by the Authenticator for this bucket.- Specified by:
openBucketin interfaceClustertimeout- the custom timeout.timeUnit- the time unit for the custom timeout.- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, String password)
Description copied from interface:ClusterOpens a bucket identified by its name and password with the default connect timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceCluster- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, String password, long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterOpens a bucket identified by its name and password with a custom timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceClustertimeout- the custom timeout.timeUnit- the time unit for the custom timeout.- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, String password, List<Transcoder<? extends Document,?>> transcoders)
Description copied from interface:ClusterOpens a bucket identified by its name and password with custom transcoders and with the default connect timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceCluster- Returns:
- the opened bucket if successful.
-
openBucket
public Bucket openBucket(String name, String password, List<Transcoder<? extends Document,?>> transcoders, long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterOpens a bucket identified by its name and password with custom transcoders and with a custom timeout. This method throws: - java.util.concurrent.TimeoutException: If the timeout is exceeded. - com.couchbase.client.core.CouchbaseException: If the bucket could not be opened (see logs and nested stack trace for more details why it failed). - com.couchbase.client.core.BackpressureException: If the incoming request rate is too high to be processed.- Specified by:
openBucketin interfaceClustertimeout- the custom timeout.timeUnit- the time unit for the custom timeout.- Returns:
- the opened bucket if successful.
-
clusterManager
public ClusterManager clusterManager(String username, String password)
Description copied from interface:ClusterProvides access to theClusterManagerto perform cluster-wide operations. Note that the credentials provided here are different from bucket-level credentials. As a rule of thumb, the "Administrator" credentials need to be passed in here or any credentials with enough permissions to perform the underlying operations. **Bucket level credentials will not work.**- Specified by:
clusterManagerin interfaceCluster- Parameters:
username- the username to perform cluster-wide operations.password- the password associated with the username.- Returns:
- the
ClusterManagerif successful.
-
clusterManager
public ClusterManager clusterManager()
Description copied from interface:ClusterProvides access to theClusterManagerto perform cluster-wide operations, using the credentials set through the configuredAuthenticator(seeCluster.authenticate(Authenticator)), for theCredentialContext.CLUSTER_MANAGEMENTcontext.- Specified by:
clusterManagerin interfaceCluster- Returns:
- the
ClusterManagerif successful.
-
disconnect
public Boolean disconnect()
Description copied from interface:ClusterDisconnects form all open buckets and shuts down theCouchbaseEnvironmentif it is the exclusive owner with the default disconnect timeout.- Specified by:
disconnectin interfaceCluster- Returns:
- true once done and everything succeeded, false otherwise.
-
disconnect
public Boolean disconnect(long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterDisconnects form all open buckets and shuts down theCouchbaseEnvironmentif it is the exclusive owner with a custom timeout.- Specified by:
disconnectin interfaceCluster- Returns:
- true once done and everything succeeded, false otherwise.
-
core
public ClusterFacade core()
Description copied from interface:ClusterReturns the underlying "core-io" library through itsClusterFacade. Handle with care, with great power comes great responsibility. All additional checks which are normally performed by this library are skipped.- Specified by:
corein interfaceCluster- Returns:
- the underlying
ClusterFacadefrom the "core-io" package.
-
authenticate
public CouchbaseCluster authenticate(Authenticator auth)
Description copied from interface:ClusterSets theAuthenticatorto use when credentials are needed for an operation but no explicit credentials are provided. Note that setting a new Authenticator will not be propagated to anyBucketthat has been opened with the previous Authenticator, as the instance is passed to the Bucket for its own use.- Specified by:
authenticatein interfaceCluster- Parameters:
auth- the newAuthenticatorto use.- Returns:
- this Cluster instance for chaining.
-
authenticate
public CouchbaseCluster authenticate(String username, String password)
Description copied from interface:ClusterShortcut method to directly authenticate with a username and a password.- Specified by:
authenticatein interfaceCluster- Parameters:
username- the username to authenticatepassword- the password for the username- Returns:
- this Cluster instance for chaining.
-
authenticator
@Uncommitted @Private public Authenticator authenticator()
Get theAuthenticatorcurrently used when credentials are needed for an operation, but no explicit credentials are provided.- Returns:
- the Authenticator currently used for this cluster.
-
query
public N1qlQueryResult query(N1qlQuery query)
Description copied from interface:ClusterSynchronously perform a N1QL query that can span multiple buckets, with the defaulttimeout. The query will use credentials set through this cluster'sAuthenticator. In order to use that method, at least oneBucketmust currently be opened. Note that if you are only performing queries spanning a single bucket, you should prefer opening thatBucketand use the query API at the bucket level. This method throws under the following conditions: -UnsupportedOperationException: no bucket is currently opened. -IllegalStateException: noAuthenticatoris set or no credentials are available in it for cluster level querying. -TimeoutExceptionwrapped in aRuntimeException: the operation takes longer than the default timeout. -BackpressureException: the producer outpaces the SDK. -RequestCancelledException: the operation had to be cancelled while on the wire or the retry strategy cancelled it instead of retrying.- Specified by:
queryin interfaceCluster- Parameters:
query- theN1qlQueryto execute.- Returns:
- the
query result.
-
query
public N1qlQueryResult query(N1qlQuery query, long timeout, TimeUnit timeUnit)
Description copied from interface:ClusterSynchronously perform a N1QL query that can span multiple buckets, with a custom timeout. The query will use credentials set through this cluster'sAuthenticator. In order to use that method, at least oneBucketmust currently be opened. Note that if you are only performing queries spanning a single bucket, you should prefer opening thatBucketand use the query API at the bucket level. This method throws under the following conditions: -UnsupportedOperationException: no bucket is currently opened. -IllegalStateException: noAuthenticatoris set or no credentials are available in it for cluster level querying. -TimeoutExceptionwrapped in aRuntimeException: the operation takes longer than the specified timeout. -BackpressureException: the producer outpaces the SDK. -RequestCancelledException: the operation had to be cancelled while on the wire or the retry strategy cancelled it instead of retrying.- Specified by:
queryin interfaceCluster- Parameters:
query- theN1qlQueryto execute.timeout- the custom timeout.timeUnit- the unit for the timeout.- Returns:
- the
query result.
-
diagnostics
public DiagnosticsReport diagnostics()
Description copied from interface:ClusterProvides a simple health check which allows insight into the current state of services and endpoints.- Specified by:
diagnosticsin interfaceCluster- Returns:
- health services in the form of
DiagnosticsReport.
-
diagnostics
public DiagnosticsReport diagnostics(String reportId)
Description copied from interface:ClusterProvides a simple health check which allows insight into the current state of services and endpoints.- Specified by:
diagnosticsin interfaceCluster- Returns:
- health services in the form of
DiagnosticsReport.
-
-