内容简介:本文主要研究一下jest的IdleConnectionReaperjest-common-6.3.1-sources.jar!/io/searchbox/client/config/idle/IdleConnectionReaper.javajest-common-6.3.1-sources.jar!/io/searchbox/client/config/idle/ReapableConnectionManager.java
序
本文主要研究一下jest的IdleConnectionReaper
IdleConnectionReaper
jest-common-6.3.1-sources.jar!/io/searchbox/client/config/idle/IdleConnectionReaper.java
public class IdleConnectionReaper extends AbstractScheduledService {
final static Logger logger = LoggerFactory.getLogger(IdleConnectionReaper.class);
private final ReapableConnectionManager reapableConnectionManager;
private final ClientConfig clientConfig;
public IdleConnectionReaper(ClientConfig clientConfig, ReapableConnectionManager reapableConnectionManager) {
this.reapableConnectionManager = reapableConnectionManager;
this.clientConfig = clientConfig;
}
@Override
protected void runOneIteration() throws Exception {
logger.debug("closing idle connections...");
reapableConnectionManager.closeIdleConnections(clientConfig.getMaxConnectionIdleTime(),
clientConfig.getMaxConnectionIdleTimeDurationTimeUnit());
}
@Override
protected Scheduler scheduler() {
return Scheduler.newFixedDelaySchedule(0l,
clientConfig.getMaxConnectionIdleTime(),
clientConfig.getMaxConnectionIdleTimeDurationTimeUnit());
}
@Override
protected ScheduledExecutorService executor() {
final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(
new ThreadFactoryBuilder()
.setDaemon(true)
.setNameFormat(serviceName())
.build());
// Add a listener to shutdown the executor after the service is stopped. This ensures that the
// JVM shutdown will not be prevented from exiting after this service has stopped or failed.
// Technically this listener is added after start() was called so it is a little gross, but it
// is called within doStart() so we know that the service cannot terminate or fail concurrently
// with adding this listener so it is impossible to miss an event that we are interested in.
addListener(new Listener() {
@Override public void terminated(State from) {
executor.shutdown();
}
@Override public void failed(State from, Throwable failure) {
executor.shutdown();
}}, MoreExecutors.directExecutor());
return executor;
}
}
- IdleConnectionReaper继承了AbstractScheduledService,它的构造器接收clientConfig及reapableConnectionManager;其runOneIteration执行了reapableConnectionManager.closeIdleConnections;其scheduler方法创建的是fixedDelay Scheduler;其executor方法创建的是SingleThreadScheduledExecutor
ReapableConnectionManager
jest-common-6.3.1-sources.jar!/io/searchbox/client/config/idle/ReapableConnectionManager.java
public interface ReapableConnectionManager {
void closeIdleConnections(long idleTimeout, TimeUnit unit);
}
- ReapableConnectionManager接口定义了closeIdleConnections方法
HttpReapableConnectionManager
jest-6.3.1-sources.jar!/io/searchbox/client/config/idle/HttpReapableConnectionManager.java
public class HttpReapableConnectionManager implements ReapableConnectionManager {
private final HttpClientConnectionManager connectionManager;
private final NHttpClientConnectionManager nConnectionManager;
public HttpReapableConnectionManager(HttpClientConnectionManager connectionManager, NHttpClientConnectionManager nConnectionManager) {
if(connectionManager == null || nConnectionManager == null) throw new IllegalArgumentException();
this.connectionManager = connectionManager;
this.nConnectionManager = nConnectionManager;
}
@Override
public void closeIdleConnections(long idleTimeout, TimeUnit unit) {
connectionManager.closeIdleConnections(idleTimeout, unit);
nConnectionManager.closeIdleConnections(idleTimeout, unit);
}
}
- HttpReapableConnectionManager实现了ReapableConnectionManager接口;其构造器要求输入connectionManager及nConnectionManager,二者不能同时为null;其closeIdleConnections方法分别执行了connectionManager.closeIdleConnections及nConnectionManager.closeIdleConnections
小结
- IdleConnectionReaper继承了AbstractScheduledService,它的构造器接收clientConfig及reapableConnectionManager;其runOneIteration执行了reapableConnectionManager.closeIdleConnections;其scheduler方法创建的是fixedDelay Scheduler;其executor方法创建的是SingleThreadScheduledExecutor
- ReapableConnectionManager接口定义了closeIdleConnections方法
- HttpReapableConnectionManager实现了ReapableConnectionManager接口;其构造器要求输入connectionManager及nConnectionManager,二者不能同时为null;其closeIdleConnections方法分别执行了connectionManager.closeIdleConnections及nConnectionManager.closeIdleConnections
doc
以上所述就是小编给大家介绍的《聊聊jest的IdleConnectionReaper》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
禅与摩托车维修艺术
(美)罗伯特·M.波西格 / 张国辰 / 重庆出版社 / 2011-9 / 36.00元
在一个炎热的夏天,父子两人和约翰夫妇骑摩托车从明尼苏达到加州,跨越美国大陆,旅行的过程与一个青年斐德洛研修科学技术与西方经典,寻求自我的解脱,以及探寻生命的意义的过程相互穿插。一路上父亲以一场哲学肖陶扩的形式,将见到的自然景色,野外露营的经历,夜晚旅店的谈话,机车修护技术等等日常生活与西方从苏格拉底以来的理性哲学的深入浅出的阐述与评论相结合,进行了对形而上学传统的主客体二元论的反思,以及对科学与艺......一起来看看 《禅与摩托车维修艺术》 这本书的介绍吧!