public static class DseCluster.Builder extends Cluster.Builder
DseCluster
instances.Constructor and Description |
---|
Builder() |
Modifier and Type | Method and Description |
---|---|
DseCluster.Builder |
addContactPoint(String address)
Adds a contact point - or many if it host resolves to multiple
InetAddress s (A records). |
DseCluster.Builder |
addContactPoints(Collection<InetAddress> addresses)
Adds contact points.
|
DseCluster.Builder |
addContactPoints(InetAddress... addresses)
Adds contact points.
|
DseCluster.Builder |
addContactPoints(String... addresses)
Adds contact points.
|
DseCluster.Builder |
addContactPointsWithPorts(Collection<InetSocketAddress> addresses)
Adds contact points.
|
DseCluster |
build()
Builds the cluster with the configured set of initial contact points
and policies.
|
DseConfiguration |
getConfiguration()
The configuration that will be used for the new cluster.
|
DseCluster.Builder |
withAddressTranslator(AddressTranslator translator)
Configures the address translator to use for the new cluster.
|
DseCluster.Builder |
withAuthProvider(AuthProvider authProvider)
Use the specified AuthProvider when connecting to Cassandra
hosts.
|
DseCluster.Builder |
withClusterName(String name)
An optional name for the create cluster.
|
DseCluster.Builder |
withCodecRegistry(CodecRegistry codecRegistry)
Configures the
CodecRegistry instance to use for the new cluster. |
DseCluster.Builder |
withCompression(ProtocolOptions.Compression compression)
Sets the compression to use for the transport.
|
DseCluster.Builder |
withCredentials(String username,
String password)
Uses the provided credentials when connecting to Cassandra hosts.
|
DseCluster.Builder |
withGraphOptions(GraphOptions graphOptions)
Sets the default options to use with graph queries.
|
DseCluster.Builder |
withInitialListeners(Collection<Host.StateListener> listeners)
Register the provided listeners in the newly created cluster.
|
DseCluster.Builder |
withLoadBalancingPolicy(LoadBalancingPolicy policy)
Configures the load balancing policy to use for the new DSE cluster.
|
DseCluster.Builder |
withMaxSchemaAgreementWaitSeconds(int maxSchemaAgreementWaitSeconds)
Sets the maximum time to wait for schema agreement before returning from a DDL query.
|
DseCluster.Builder |
withNettyOptions(NettyOptions nettyOptions)
Set the
NettyOptions to use for the newly created Cluster. |
DseCluster.Builder |
withoutGeospatialCodecs()
Prevents the registration of
geospatial type codecs with the
new cluster. |
DseCluster.Builder |
withoutJMXReporting()
Disables JMX reporting of the metrics.
|
DseCluster.Builder |
withoutMetrics()
Disables metrics collection for the created cluster (metrics are
enabled by default otherwise).
|
DseCluster.Builder |
withPoolingOptions(PoolingOptions options)
Sets the PoolingOptions to use for the newly created Cluster.
|
DseCluster.Builder |
withPort(int port)
The port to use to connect to the Cassandra host.
|
DseCluster.Builder |
withProtocolVersion(ProtocolVersion version)
The native protocol version to use.
|
DseCluster.Builder |
withQueryOptions(QueryOptions options)
Sets the QueryOptions to use for the newly created Cluster.
|
DseCluster.Builder |
withReconnectionPolicy(ReconnectionPolicy policy)
Configures the reconnection policy to use for the new cluster.
|
DseCluster.Builder |
withRetryPolicy(RetryPolicy policy)
Configures the retry policy to use for the new cluster.
|
DseCluster.Builder |
withSocketOptions(SocketOptions options)
Sets the SocketOptions to use for the newly created Cluster.
|
DseCluster.Builder |
withSpeculativeExecutionPolicy(SpeculativeExecutionPolicy policy)
Configures the speculative execution policy to use for the new cluster.
|
DseCluster.Builder |
withSSL()
Enables the use of SSL for the created
Cluster . |
DseCluster.Builder |
withSSL(SSLOptions sslOptions)
Enable the use of SSL for the created
Cluster using the provided options. |
DseCluster.Builder |
withTimestampGenerator(TimestampGenerator timestampGenerator)
Configures the generator that will produce the client-side timestamp sent
with each query.
|
addContactPointsWithPorts, getClusterName, getContactPoints, getInitialListeners
public DseCluster.Builder withGraphOptions(GraphOptions graphOptions)
GraphOptions
instance with the default values.graphOptions
- the graph options.public DseCluster.Builder withoutGeospatialCodecs()
geospatial type
codecs with the
new cluster.
If this method is not called, those codecs will be registered by default.CodecRegistry
,
TypeCodec
public DseCluster.Builder withClusterName(String name)
Cluster.Builder
Cluster.getClusterName()
for
details.
If you use this method and create more than one Cluster instance in the
same JVM (which should be avoided unless you need to connect to multiple
Cassandra clusters), you should make sure each Cluster instance get a
unique name or you may have a problem with JMX reporting.withClusterName
in class Cluster.Builder
name
- the cluster name to use for the created Cluster instance.public DseCluster.Builder withPort(int port)
Cluster.Builder
withPort
in class Cluster.Builder
port
- the port to set.public DseCluster.Builder withMaxSchemaAgreementWaitSeconds(int maxSchemaAgreementWaitSeconds)
Cluster.Builder
withMaxSchemaAgreementWaitSeconds
in class Cluster.Builder
maxSchemaAgreementWaitSeconds
- the new value to set.public DseCluster.Builder withProtocolVersion(ProtocolVersion version)
Cluster.Builder
Protocol version | Minimum Cassandra version |
---|---|
1 | 1.2 |
2 | 2.0 |
3 | 2.1 |
ProtocolVersion.NEWEST_SUPPORTED
, and if not supported fallback to
the highest version supported by the first node it connects to. Please note
that once the version is "auto-detected", it won't change: if the first node
the driver connects to is a Cassandra 1.2 node and auto-detection is used
(the default), then the native protocol version 1 will be use for the lifetime
of the Cluster instance.
This method allows to force the use of a particular protocol version. Forcing
version 1 is always fine since all Cassandra version (at least all those
supporting the native protocol in the first place) so far support it. However,
please note that a number of features of the driver won't be available if that
version of the protocol is in use, including result set paging,
BatchStatement
, executing a non-prepared query with binary values
(Session.execute(String, Object...)
), ... (those methods will throw
an UnsupportedFeatureException). Using the protocol version 1 should thus
only be considered when using Cassandra 1.2, until nodes have been upgraded
to Cassandra 2.0.
If version 2 of the protocol is used, then Cassandra 1.2 nodes will be ignored
(the driver won't connect to them).
The default behavior (auto-detection) is fine in almost all case, but you may
want to force a particular version if you have a Cassandra cluster with mixed
1.2/2.0 nodes (i.e. during a Cassandra upgrade).withProtocolVersion
in class Cluster.Builder
version
- the native protocol version to use. null
is also supported
to trigger auto-detection (see above) but this is the default (so you don't have
to call this method for that behavior).public DseCluster.Builder addContactPoint(String address)
Cluster.Builder
InetAddress
s (A records).
Contact points are addresses of Cassandra nodes that the driver uses
to discover the cluster topology. Only one contact point is required
(the driver will retrieve the address of the other nodes
automatically), but it is usually a good idea to provide more than
one contact point, because if that single contact point is unavailable,
the driver cannot initialize itself correctly.
Note that by default (that is, unless you use the Cluster.Builder.withLoadBalancingPolicy(com.datastax.driver.core.policies.LoadBalancingPolicy)
)
method of this builder), the first succesfully contacted host will be used
to define the local data-center for the client. If follows that if you are
running Cassandra in a multiple data-center setting, it is a good idea to
only provide contact points that are in the same datacenter than the client,
or to provide manually the load balancing policy that suits your need.
If the host name points to a DNS record with multiple a-records, all InetAddresses
returned will be used. Make sure that all resulting InetAddress
s returned
point to the same cluster and datacenter.addContactPoint
in class Cluster.Builder
address
- the address of the node(s) to connect topublic DseCluster.Builder addContactPoints(String... addresses)
Cluster.Builder
Cluster.Builder.addContactPoint(java.lang.String)
for more details on contact
points.addContactPoints
in class Cluster.Builder
addresses
- addresses of the nodes to add as contact point.Cluster.Builder.addContactPoint(java.lang.String)
public DseCluster.Builder addContactPoints(InetAddress... addresses)
Cluster.Builder
Cluster.Builder.addContactPoint(java.lang.String)
for more details on contact
points.addContactPoints
in class Cluster.Builder
addresses
- addresses of the nodes to add as contact point.Cluster.Builder.addContactPoint(java.lang.String)
public DseCluster.Builder addContactPoints(Collection<InetAddress> addresses)
Cluster.Builder
Cluster.Builder.addContactPoint(java.lang.String)
for more details on contact
points.addContactPoints
in class Cluster.Builder
addresses
- addresses of the nodes to add as contact pointCluster.Builder.addContactPoint(java.lang.String)
public DseCluster.Builder addContactPointsWithPorts(Collection<InetSocketAddress> addresses)
Cluster.Builder
Cluster.Builder.addContactPoint(java.lang.String)
for more details on contact
points. Contrarily to other addContactPoints
methods, this method
allow to provide a different port for each contact points. Since Cassandra
nodes must always all listen on the same port, this is rarelly what you
want and most users should prefer other addContactPoints
methods to
this one. However, this can be useful if the Cassandra nodes are behind
a router and are not accessed directly. Note that if you are in this
situation (Cassandra nodes are behind a router, not directly accessible),
you almost surely want to provide a specific AddressTranslator
(through Cluster.Builder.withAddressTranslator(com.datastax.driver.core.policies.AddressTranslator)
) to translate actual Cassandra node
addresses to the addresses the driver should use, otherwise the driver
will not be able to auto-detect new nodes (and will generally not function
optimally).addContactPointsWithPorts
in class Cluster.Builder
addresses
- addresses of the nodes to add as contact pointCluster.Builder.addContactPoint(java.lang.String)
public DseCluster.Builder withLoadBalancingPolicy(LoadBalancingPolicy policy)
DseLoadBalancingPolicy
to
ensure that queries are routed optimally.
If no load balancing policy is set through this method, the default is to use a
Policies.defaultLoadBalancingPolicy()
wrapped into a TargetingLoadBalancingPolicy
.withLoadBalancingPolicy
in class Cluster.Builder
policy
- the load balancing policy to use.public DseCluster.Builder withReconnectionPolicy(ReconnectionPolicy policy)
Cluster.Builder
Policies.DEFAULT_RECONNECTION_POLICY
will be used instead.withReconnectionPolicy
in class Cluster.Builder
policy
- the reconnection policy to use.public DseCluster.Builder withRetryPolicy(RetryPolicy policy)
Cluster.Builder
Policies.DEFAULT_RETRY_POLICY
will be used instead.withRetryPolicy
in class Cluster.Builder
policy
- the retry policy to use.public DseCluster.Builder withAddressTranslator(AddressTranslator translator)
Cluster.Builder
AddressTranslator
for more detail on address translation,
but the default translator, IdentityTranslator
, should be
correct in most cases. If unsure, stick to the default.withAddressTranslator
in class Cluster.Builder
translator
- the translator to use.public DseCluster.Builder withTimestampGenerator(TimestampGenerator timestampGenerator)
Cluster.Builder
V3
or
above of the native protocol. With earlier versions, timestamps are always
generated server-side, and setting a generator through this method will have
no effect.
If no generator is set through this method, the driver will default to
client-side timestamps by using AtomicMonotonicTimestampGenerator
.withTimestampGenerator
in class Cluster.Builder
timestampGenerator
- the generator to use.public DseCluster.Builder withSpeculativeExecutionPolicy(SpeculativeExecutionPolicy policy)
Cluster.Builder
Policies.defaultSpeculativeExecutionPolicy()
will be used instead.withSpeculativeExecutionPolicy
in class Cluster.Builder
policy
- the policy to use.public DseCluster.Builder withCodecRegistry(CodecRegistry codecRegistry)
Cluster.Builder
CodecRegistry
instance to use for the new cluster.
If no codec registry is set through this method, CodecRegistry.DEFAULT_INSTANCE
will be used instead.
Note that if two or more Cluster
instances are configured to
use the default codec registry, they are going to share the same instance.
In this case, care should be taken when registering new codecs on it as any
codec registered by one cluster would be immediately available to others
sharing the same default instance.
withCodecRegistry
in class Cluster.Builder
codecRegistry
- the codec registry to use.public DseCluster.Builder withCredentials(String username, String password)
Cluster.Builder
PasswordAuthenticator
. If the the default AllowAllAuthenticator
is used instead, using this method has no
effect.withCredentials
in class Cluster.Builder
username
- the username to use to login to Cassandra hosts.password
- the password corresponding to username
.public DseCluster.Builder withAuthProvider(AuthProvider authProvider)
Cluster.Builder
withCredentials
on the same Builder
instance as one will supersede the
otherwithAuthProvider
in class Cluster.Builder
authProvider
- the AuthProvider
to use to login to
Cassandra hosts.public DseCluster.Builder withCompression(ProtocolOptions.Compression compression)
Cluster.Builder
withCompression
in class Cluster.Builder
compression
- the compression to set.ProtocolOptions.Compression
public DseCluster.Builder withoutMetrics()
Cluster.Builder
withoutMetrics
in class Cluster.Builder
public DseCluster.Builder withSSL()
Cluster.Builder
Cluster
.
Calling this method will use the JDK-based implementation with the default options
(see JdkSSLOptions.Builder
).
This is thus a shortcut for withSSL(JdkSSLOptions.builder().build())
.
Note that if SSL is enabled, the driver will not connect to any
Cassandra nodes that doesn't have SSL enabled and it is strongly
advised to enable SSL on every Cassandra node if you plan on using
SSL in the driver.withSSL
in class Cluster.Builder
public DseCluster.Builder withSSL(SSLOptions sslOptions)
Cluster.Builder
Cluster
using the provided options.withSSL
in class Cluster.Builder
sslOptions
- the SSL options to use.public DseCluster.Builder withInitialListeners(Collection<Host.StateListener> listeners)
Cluster.Builder
withInitialListeners
in class Cluster.Builder
listeners
- the listeners to register.public DseCluster.Builder withoutJMXReporting()
Cluster.Builder
Metrics
) but can be
disabled using this option. If metrics are disabled, this is a
no-op.withoutJMXReporting
in class Cluster.Builder
public DseCluster.Builder withPoolingOptions(PoolingOptions options)
Cluster.Builder
withPoolingOptions
in class Cluster.Builder
options
- the pooling options to use.public DseCluster.Builder withSocketOptions(SocketOptions options)
Cluster.Builder
withSocketOptions
in class Cluster.Builder
options
- the socket options to use.public DseCluster.Builder withQueryOptions(QueryOptions options)
Cluster.Builder
withQueryOptions
in class Cluster.Builder
options
- the query options to use.public DseCluster.Builder withNettyOptions(NettyOptions nettyOptions)
Cluster.Builder
NettyOptions
to use for the newly created Cluster.
If no Netty options are set through this method, NettyOptions.DEFAULT_INSTANCE
will be used as a default value, which means that no customization will be applied.withNettyOptions
in class Cluster.Builder
nettyOptions
- the NettyOptions
to use.public DseCluster build()
Cluster.Builder
Cluster.buildFrom(this)
.build
in class Cluster.Builder
public DseConfiguration getConfiguration()
Cluster.Builder
Builder
.getConfiguration
in interface Cluster.Initializer
getConfiguration
in class Cluster.Builder