in src/main/java/com/aliyun/mns/common/http/HttpFactory.java [106:142]
public static PoolingNHttpClientConnectionManager createConnectionManager(ClientConfiguration config) {
// Set HTTP params.
// Create I/O reactor configuration
IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
.setIoThreadCount(config.getIoReactorThreadCount())
.setConnectTimeout(config.getConnectionTimeout())
.setSoTimeout(config.getSocketTimeout())
.setSoKeepAlive(config.isSoKeepAlive()).build();
// Create a custom I/O reactort
DefaultConnectingIOReactor ioReactor;
try {
ioReactor = new DefaultConnectingIOReactor(ioReactorConfig);
ioReactor.setExceptionHandler(new IOReactorExceptionHandler() {
@Override
public boolean handle(IOException ex) {
logger.error("I/O error", ex);
return true;
}
@Override
public boolean handle(RuntimeException ex) {
logger.error("I/O runtime error", ex);
return true;
}
});
} catch (IOReactorException e) {
throw new RuntimeException(e);
}
PoolingNHttpClientConnectionManager connManager = new PoolingNHttpClientConnectionManager(
ioReactor);
connManager.setDefaultMaxPerRoute(config.getMaxConnectionsPerRoute());
connManager.setMaxTotal(config.getMaxConnections());
return connManager;
}