package com.netflix.hystrix;
import static com.netflix.hystrix.strategy.properties.HystrixPropertiesChainedProperty.forInteger;
import com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy;
import com.netflix.hystrix.strategy.properties.HystrixProperty;
Properties for Hystrix timer thread pool.
Default implementation of methods uses Archaius (https://github.com/Netflix/archaius)
/**
* Properties for Hystrix timer thread pool.
* <p>
* Default implementation of methods uses Archaius (https://github.com/Netflix/archaius)
*/
public abstract class HystrixTimerThreadPoolProperties {
private final HystrixProperty<Integer> corePoolSize;
protected HystrixTimerThreadPoolProperties() {
this(new Setter().withCoreSize(Runtime.getRuntime().availableProcessors()));
}
protected HystrixTimerThreadPoolProperties(Setter setter) {
this.corePoolSize = getProperty("hystrix", "coreSize", setter.getCoreSize());
}
private static HystrixProperty<Integer> getProperty(String propertyPrefix, String instanceProperty, Integer defaultValue) {
return forInteger()
.add(propertyPrefix + ".timer.threadpool.default." + instanceProperty, defaultValue)
.build();
}
public HystrixProperty<Integer> getCorePoolSize() {
return corePoolSize;
}
Factory method to retrieve the default Setter.
/**
* Factory method to retrieve the default Setter.
*/
public static Setter Setter() {
return new Setter();
}
Fluent interface that allows chained setting of properties.
See HystrixPropertiesStrategy
for more information on order of precedence.
Example:
HystrixTimerThreadPoolProperties.Setter()
.withCoreSize(10);
@NotThreadSafe
/**
* Fluent interface that allows chained setting of properties.
* <p>
* See {@link HystrixPropertiesStrategy} for more information on order of precedence.
* <p>
* Example:
* <p>
* <pre> {@code
* HystrixTimerThreadPoolProperties.Setter()
* .withCoreSize(10);
* } </pre>
*
* @NotThreadSafe
*/
public static class Setter {
private Integer coreSize = null;
private Setter() {
}
public Integer getCoreSize() {
return coreSize;
}
public Setter withCoreSize(int value) {
this.coreSize = value;
return this;
}
}
}