com.navercorp.redis.cluster.RedisClusterPoolConfig Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2015 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.navercorp.redis.cluster;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
/**
* Subclass of org.apache.commons.pool.impl.GenericObjectPool.Config that
* includes getters/setters so it can be more easily configured by Spring and
* other IoC frameworks.
*
*
* Spring example:
*
* <bean id="redisClusterPoolConfig" class="RedisClusterPoolConfig"> <property
* name="testWhileIdle" value="true"/> </bean>
*
*
* maxActive is 8
* testWhileIdle is true
* minEvictableIdleTimeMillis is 60000
* timeBetweenEvictionRunsMillis is 30000
* numTestsPerEvictionRun is -1
* ...
*
*
* For information on parameters refer to:
*
* http://commons.apache.org/pool/apidocs/org/apache/commons/pool/impl/
* GenericObjectPool.html
*
* @author jaehong.kim
*/
public class RedisClusterPoolConfig extends GenericObjectPoolConfig {
public static final int DEFAULT_INITIAL_SIZE = 8;
public static final int DEFAULT_MAX_ACTIVE = DEFAULT_INITIAL_SIZE;
public static final int DEFAULT_MAX_IDLE = DEFAULT_MAX_ACTIVE;
public static final int DEFAULT_MIN_IDLE = 0;
public static final int DEFAULT_MAX_WAIT_MILLIS = 1000;
public static final int DEFAULT_NUM_TEST_PER_EVICTION_RUN = 2;
public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = 5L * 60L * 1000L; // 5 minutes
/**
* The initial number of connections that are created when the pool
* is started
*/
private int initialSize = DEFAULT_INITIAL_SIZE;
public RedisClusterPoolConfig() {
// RedisClusterPool defaults setting different with GenericObjectPool.Config
setMaxWaitMillis(DEFAULT_MAX_WAIT_MILLIS);
setMaxTotal(DEFAULT_MAX_ACTIVE);
setMaxIdle(DEFAULT_MAX_IDLE);
setMinIdle(DEFAULT_MIN_IDLE);
setTestWhileIdle(true);
setLifo(false);
setMinEvictableIdleTimeMillis(-1);
setTimeBetweenEvictionRunsMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS);
setNumTestsPerEvictionRun(DEFAULT_NUM_TEST_PER_EVICTION_RUN);
}
public void setMaxWait(long maxWaitMillis) {
setMaxWaitMillis(maxWaitMillis);
}
public long getMaxWait() {
return getMaxWaitMillis();
}
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMaxActive() {
return getMaxTotal();
}
public void setMaxActive(int maxActive) {
setMaxTotal(maxActive);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("{");
builder.append("initialSize=").append(initialSize).append(", ");
builder.append("maxIdle=").append(getMaxIdle()).append(", ");
builder.append("minIdle=").append(getMinIdle()).append(", ");
builder.append("maxActive=").append(getMaxActive()).append(", ");
builder.append("maxWait=").append(getMaxWait()).append(", ");
builder.append("whenExhaustedAction=").append(getBlockWhenExhausted()).append(", ");
builder.append("testOnBorrow=").append(getTestOnBorrow()).append(", ");
builder.append("testOnReturn=").append(getTestOnReturn()).append(", ");
builder.append("testWhileIdle=").append(getTestWhileIdle()).append(", ");
builder.append("timeBetweenEvictionRunsMillis=").append(getTimeBetweenEvictionRunsMillis()).append(", ");
builder.append("numTestsPerEvictionRun=").append(getNumTestsPerEvictionRun()).append(", ");
builder.append("minEvictableIdleTimeMillis=").append(getMinEvictableIdleTimeMillis()).append(", ");
builder.append("softMinEvictableIdleTimeMillis=").append(getSoftMinEvictableIdleTimeMillis());
builder.append("}");
return builder.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy