package net.iponweb.disthene.reader.utils; import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy; import com.datastax.driver.core.policies.LatencyAwarePolicy; import com.datastax.driver.core.policies.LoadBalancingPolicy; import com.datastax.driver.core.policies.RoundRobinPolicy; import com.datastax.driver.core.policies.TokenAwarePolicy; public class CassandraLoadBalancingPolicies { public static final String tokenAwarePolicy = "TokenAwarePolicy"; public static final String tokenDcAwareRoundRobinPolicy = "TokenDcAwareRoundRobinPolicy"; public static final String tokenLatencyAwarePolicy = "TokenLatencyAwarePolicy"; public static LoadBalancingPolicy getLoadBalancingPolicy(String policy) { LoadBalancingPolicy loadBalancingPolicy; switch (policy) { case tokenAwarePolicy: loadBalancingPolicy = new TokenAwarePolicy(new RoundRobinPolicy()); break; case tokenDcAwareRoundRobinPolicy: loadBalancingPolicy = new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()); break; case tokenLatencyAwarePolicy: loadBalancingPolicy = new TokenAwarePolicy(LatencyAwarePolicy.builder(new RoundRobinPolicy()).build()); break; default: throw new IllegalArgumentException("Cassandra load balancing policy can be " + tokenAwarePolicy + " ," + tokenLatencyAwarePolicy + " ," + tokenDcAwareRoundRobinPolicy); } return loadBalancingPolicy; } }