Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Java Driver Configuration

lukaszsoszynski edited this page · 3 revisions
Clone this wiki locally

The basic config

        final String clusterName = "myCluster";
        final String keyspaceName = "myKeyspace";

        final String SEEDS = "localhost";
        final Supplier<List<Host>> HostSupplier = new Supplier<List<Host>>() {

            public List<Host> get() {
                Host host = new Host(SEEDS, 9160);
                return Collections.singletonList(host);

        AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
                new AstyanaxConfigurationImpl()
                new JavaDriverConfigBuilder()


        Keyspace keyspace = context.getClient();

As shown above the following are the min required for working with Java Driver via Astyanax

  • Cluster and Keyspace name
  • HostSupplier object along with NodeDiscoveryType telling Astyanax to use the HostSupplier
  • JavaDriverConfigBuilder for the basic default config for Java Driver (Note that Astyanax does not use any of it's own defaults. It will use the Java Driver defaults directly)
  • Lastly CqlFamilyFactory telling Astyanax to switch to the astyanax-cql impl for the driver underneath

More detailed examples when configuring Java Driver

Below are some examples for configuring specific components of Java Driver. Note that these knobs are different from the knobs that Astyanax provides in general, but this is everything that is currently available with Java Driver. The JavaDriverConfigBuilder is your friend when you want to explicitly configure something with the Java Driver. It exposes all the config that is available with Java Driver and provides a helpful builder style fluent interface that is consistent with the rest of the Astyanax API.

Configuring Load Balancing Policy

                new JavaDriverConfigBuilder()
                .withLoadBalancingPolicy(new TokenAwarePolicy(new RoundRobinPolicy()))

Note that the default is Round Robin. Other policies available are

  • DCAwareRoundRobinPolicy
  • LatencyAwarePolicy
  • TokenAwarePolicy

Configuring Reconnection Policy

                new JavaDriverConfigBuilder()
                .withReconnectionPolicy(new ConstantReconnectionPolicy(1000))

All policies available are

  • ExponentialReconnectionPolicy
  • ConstantReconnectionPolicy Default is ExponentialReconnectionPolicy (base delay - 1 sec, max delay - 10 mins).

Configuring Retry Policy

                new JavaDriverConfigBuilder()

All policies available are

  • DefaultRetryPolicy
  • DowngradingConsistencyRetryPolicy
  • FallThroughRetryPolicy
  • LoggingRetryPolicy

Default is DefaultRetryPolicy (base delay - 1 sec, max delay - 10 mins).

Configuring native protocol connection port

                new JavaDriverConfigBuilder()

Default is 9042

Configuring connections

            new JavaDriverConfigBuilder()
                .withCoreConnsPerHost(HostDistance.LOCAL, 3)
                .withMaxConnsPerHost(HostDistance.LOCAL, 8)
                .withMinRequestsPerConnection(HostDistance.LOCAL, 128)
                .withMaxRequestsPerConnection(HostDistance.LOCAL, 200)

Default settings

  • min requests per conn = 25, max requests per conn = 100
  • Local - core pool size = 2, max pool size = 8
  • Remote - core pool size = 1, max pool size = 2

Configuring timeout settings

            new JavaDriverConfigBuilder()
                .withConnectTimeout(2, TimeUnit.SECONDS)
                .withReadTimeout(10, TimeUnit.SECONDS)

Default settings

  • Connect timeout - 5 seconds
  • Read timeout - 12 seconds

Configuring jmx metrics

                new JavaDriverConfigBuilder()

Enabled by default

Configuring Query options

                new JavaDriverConfigBuilder()

Default settings

  • ConsistencyLevel.ONE
  • Fetch size = 5000

Note that fetch size is the no of rows to fetch when paginating over large result sets

Something went wrong with that request. Please try again.