@Override public TServiceClient create(ThriftClientKey key) throws Exception { String serviceName = key.getServiceName(); String endpoint = propertyResolver.getProperty(serviceName + ".endpoint"); int connectTimeout = propertyResolver.getProperty(serviceName + ".connectTimeout", Integer.class, DEFAULT_CONNECTION_TIMEOUT); int readTimeout = propertyResolver.getProperty(serviceName + ".readTimeout", Integer.class, DEFAULT_READ_TIMEOUT); int maxRetries = propertyResolver.getProperty(serviceName + ".maxRetries", Integer.class, DEFAULT_MAX_RETRIES); TProtocol protocol; if (StringUtils.isEmpty(endpoint)) { final TLoadBalancerClient loadBalancerClient = new TLoadBalancerClient( this.loadBalancerClient, serviceName, propertyResolver.getProperty(serviceName + ".path", "") + key.getPath() ); loadBalancerClient.setConnectTimeout(connectTimeout); loadBalancerClient.setReadTimeout(readTimeout); loadBalancerClient.setMaxRetries(maxRetries); protocol = protocolFactory.getProtocol(loadBalancerClient); } else { final THttpClient httpClient = new THttpClient(endpoint); httpClient.setConnectTimeout(connectTimeout); httpClient.setReadTimeout(readTimeout); protocol = protocolFactory.getProtocol(httpClient); } return BeanUtils.instantiateClass( key.getClazz().getConstructor(TProtocol.class), (TProtocol) protocol ); }