Меня смущает способ настройки пула соединений Astyanax. Я использую следующее для настройки своего пула.
public final int CONNECTION_POOL_SIZE_PER_HOST = 1;
private String conecPoolName = "xxxx";
private String ipSeeds = "xxxxx";
private String clusterName = "xxxxx";
private String keyspaceName = "xxxxx";
private Keyspace keyspace;
private ConnectionPoolConfigurationImpl conPool;
public DMPAstyanaxConfPool() throws DMPException {
conPool = new ConnectionPoolConfigurationImpl(conecPoolName).setMaxConnsPerHost(
CONNECTION_POOL_SIZE_PER_HOST).setSeeds(ipSeeds);
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder().forCluster(clusterName)
.forKeyspace(keyspaceName)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl().setDiscoveryType(NodeDiscoveryType.NONE))
.withConnectionPoolConfiguration(conPool)
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
context.start();
keyspace = context.getEntity();
}
Большинство свойств легко понять, но я не уверен, что именно устанавливает setMaxConnsPerHost. На моей машине я использую многопоточное приложение, которое создает несколько соединений cassandra, и оно работает нормально, даже если для setMaxConnsPerHost установлено значение 1. Кроме того, я знаю, что на сервере cassandra есть конфигурация, которая позволяет нам установить максимальное количество соединений и максимальный количество подключений на хост.
Связаны ли конфигурация сервера и эта конфигурация? Иначе в чем конкретно смысл этой настройки?