能够经过相应的RestClientBuilder
类构建RestClient
实例,经过RestClient#builder(HttpHost...)
静态方法建立,惟一必需的参数是客户端将与之通讯的一个或多个主机,做为HttpHost的实例提供,以下所示:html
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http")).build();
RestClient
类是线程安全的,理想状况下与使用它的应用程序具备相同的生命周期,重要的是再也不须要时关闭它,以便它所使用的全部资源获得正确释放,以及底层的http客户端实例及其线程:node
restClient.close();
RestClientBuilder
还容许在构建RestClient
实例时可选地设置如下配置参数:apache
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); Header[] defaultHeaders = new Header[]{new BasicHeader("header", "value")}; builder.setDefaultHeaders(defaultHeaders);
设置须要随每一个请求一块儿发送的默认headers,以防止必须为每一个请求指定它们。segmentfault
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setMaxRetryTimeoutMillis(10000);
设置在屡次尝试同一请求时应该遵照的超时,默认值为30秒,与默认socket超时相同。若是自定义socket超时,则应相应地调整最大重试超时。api
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setFailureListener(new RestClient.FailureListener() { @Override public void onFailure(Node node) { } });
设置一个监听器,每次节点出现故障时都会收到通知,以防须要采起措施,当启用故障嗅探时在内部使用。安全
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setNodeSelector(NodeSelector.SKIP_DEDICATED_MASTERS);
设置用于过滤节点的节点选择器,客户端将发送请求到设置给客户端自己的节点之一,这有助于防止在启用嗅探时向专用主节点发送请求,默认状况下,客户端向每一个配置的节点发送请求。socket
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { @Override public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) { return requestConfigBuilder.setSocketTimeout(10000); } });
设置容许修改默认请求配置的回调(例如请求超时,身份验证或org.apache.http.client.config.RequestConfig.Builder容许设置的任何内容)。async
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setProxy(new HttpHost("proxy", 9000, "http")); } });
设置容许修改http客户端配置的回调(例如经过ssl进行加密通讯,或者org.apache.http.impl.nio.client.HttpAsyncClientBuilder容许设置的任何内容)。ide