public class Cluster extends Object
This is the main entry point of the driver. A simple example of access to a Cassandra cluster would be:
Cluster cluster = Cluster.builder().addContactPoint("192.168.0.1").build(); Session session = cluster.connect("db1"); for (Row row : session.execute("SELECT * FROM table1")) // do something ...
A cluster object maintains a permanent connection to one of the cluster nodes which it uses solely to maintain information on the state and current topology of the cluster. Using the connection, the driver will discover all the nodes currently in the cluster as well as new nodes joining the cluster subsequently.
Modifier and Type | Class and Description |
---|---|
static class |
Cluster.Builder
Helper class to build
Cluster instances. |
static interface |
Cluster.Initializer
Initializer for
Cluster instances. |
Modifier and Type | Method and Description |
---|---|
static Cluster.Builder |
builder()
Creates a new
Cluster.Builder instance. |
static Cluster |
buildFrom(Cluster.Initializer initializer)
Build a new cluster based on the provided initializer.
|
Session |
connect()
Creates a new session on this cluster.
|
Session |
connect(String keyspace)
Creates a new session on this cluster and sets the keyspace to the provided one.
|
String |
getClusterName()
The name of this cluster object.
|
Configuration |
getConfiguration()
The cluster configuration.
|
Metadata |
getMetadata()
Returns read-only metadata on the connected cluster.
|
Metrics |
getMetrics()
The cluster metrics.
|
Cluster |
init()
Initialize this Cluster instance.
|
Cluster |
register(Host.StateListener listener)
Registers the provided listener to be notified on hosts
up/down/added/removed events.
|
Cluster |
register(LatencyTracker tracker)
Registers the provided tracker to be updated with hosts read
latencies.
|
ShutdownFuture |
shutdown()
Initiates a shutdown of this cluster instance.
|
Cluster |
unregister(Host.StateListener listener)
Unregisters the provided listener from being notified on hosts events.
|
Cluster |
unregister(LatencyTracker tracker)
Unregisters the provided latency tracking from being updated
with host read latencies.
|
public Cluster init()
Cluster
instance. That connection is then
used to populate the cluster Metadata
.
Calling this method is optional in the sense that any call to one of the
connect
methods of this object will automatically trigger a call
to this method beforehand. It is thus only useful to call this method if
for some reason you want to populate the metadata (or test that at least
one contact point can be reached) without creating a first Session
.
Please note that this method only create one connection for metadata
gathering reasons. In particular, it doesn't create any connection pool.
Those are created when a new Session
is created through
connect
.
This method has no effect if the cluster is already initialized.
Cluster
object.NoHostAvailableException
- if no host amongst the contact points
can be reached.AuthenticationException
- if an authentication error occurs
while contacting the initial contact points.public static Cluster buildFrom(Cluster.Initializer initializer)
Note that for building a cluster programmatically, Cluster.Builder
provides a slightly less verbose shortcut with Cluster.Builder.build()
.
Also note that that all the contact points provided by initializer
must share the same port.
initializer
- the Cluster.Initializer to useIllegalArgumentException
- if the list of contact points provided
by initializer
is empty or if not all those contact points have the same port.public static Cluster.Builder builder()
Cluster.Builder
instance.
This is a convenenience method for new Cluster.Builder()
.
public Session connect()
NoHostAvailableException
- if the Cluster has not been initialized yet
(init()
has not be called and this is the first connect call) and
no host amongst the contact points can be reached.AuthenticationException
- if an authentication error occurs
while contacting the initial contact points.public Session connect(String keyspace)
keyspace
- The name of the keyspace to use for the created
Session
.keyspaceName
.NoHostAvailableException
- if the Cluster has not been initialized yet
(init()
has not be called and this is the first connect call) and
no host amongst the contact points can be reached, or if no host can be
contacted to set the keyspace
.AuthenticationException
- if an authentication error occurs
while contacting the initial contact points.public String getClusterName()
Note that this is not the Cassandra cluster name, but rather a name
assigned to this Cluster object. Currently, that name is only used
for one purpose: to distinguish exposed JMX metrics when multiple
Cluster instances live in the same JVM (which should be rare in the first
place). That name can be set at Cluster building time (through
Cluster.Builder.withClusterName(java.lang.String)
for instance) but will default to a
name like cluster1
where each Cluster instance in the same JVM
will ahve a different number.
public Metadata getMetadata()
This includes the known nodes with their status as seen by the driver,
as well as the schema definitions. Since this return metadata on the
connected cluster, this method may trigger the creation of a connection
if none has been established yet (neither init()
nor connect()
has been called yet).
NoHostAvailableException
- if the Cluster has not been initialized yet
and no host amongst the contact points can be reached.AuthenticationException
- if an authentication error occurs
while contacting the initial contact points.public Configuration getConfiguration()
public Metrics getMetrics()
null
if metrics collection has
been disabled (that is if Configuration.getMetricsOptions()
returns null
).public Cluster register(Host.StateListener listener)
Registering the same listener multiple times is a no-op.
Note that while LoadBalancingPolicy
implements
Host.StateListener
, the configured load balancy does not
need to (and should not) be registered through this method to
received host related events.
listener
- the new Host.StateListener
to register.Cluster
object;public Cluster unregister(Host.StateListener listener)
This method is a no-op if listener
hadn't previously be
registered against this Cluster.
listener
- the Host.StateListener
to unregister.Cluster
object;public Cluster register(LatencyTracker tracker)
Registering the same listener multiple times is a no-op.
Be warry that the registered tracker update
method will be call
very frequently (at the end of every query to a Cassandra host) and
should thus not be costly.
The main use case for a LatencyTracker
is so
LoadBalancingPolicy
can implement latency awareness
Typically, LatencyAwarePolicy
registers it's own internal
LatencyTracker
(automatically, you don't have to call this
method directly).
tracker
- the new LatencyTracker
to register.Cluster
object;public Cluster unregister(LatencyTracker tracker)
This method is a no-op if tracker
hadn't previously be
registered against this Cluster.
tracker
- the LatencyTracker
to unregister.Cluster
object;public ShutdownFuture shutdown()
If for some reason you wish to expedite this process, the
ShutdownFuture.force()
can be called on the result future.
This method has no particular effect if the cluster was already shut down (in which case the returned future will return immediately).
Copyright © 2013. All rights reserved.