添加以下依賴項 pom.xml
(如果您使用的是 Maven):
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-apache-httpclient-adapter</artifactId>
<version>x.y.z</version>
</dependency>
我們可以在初始化
SentinelApacheHttpClientBuilder
時使用when
CloseableHttpClient
,例如:
CloseableHttpClient httpclient = new SentinelApacheHttpClientBuilder().build();
如果我們要添加一些額外的配置,可以參考下面的代碼
HttpClientBuilder builder = new SentinelApacheHttpClientBuilder();
//builder Other Definitions
CloseableHttpClient httpclient = builder.build();
配置
-
配置:SentinelApacheHttpClientConfig
名稱 | 描述 | 類型 | 預設值 |
字首 | 自定義資源字首 | | |
提取器 | 自定義資源提取器 | | |
倒退 | 當請求被阻塞時處理請求 | | |
提取器(資源提取器)
我們可以在預設配置中定義
ApacheHttpClientResourceExtractor
自定義資源提取器替換,例如: httpclient:GET:/httpclient/back/1 ==> httpclient:GET:/httpclient/back/{id}
DefaultApacheHttpClientResourceExtractor
SentinelApacheHttpClientBuilder
SentinelApacheHttpClientConfig config = new SentinelApacheHttpClientConfig();
config.setExtractor(new ApacheHttpClientResourceExtractor() {
@Override
public String extractor(HttpRequestWrapper request) {
String contains = "/httpclient/back/";
String uri = request.getRequestLine().getUri();
if (uri.startsWith(contains)) {
uri = uri.substring(0, uri.indexOf(contains) + contains.length()) + "{id}";
}
return request.getMethod() + ":" + uri;
}
});
CloseableHttpClient httpclient = new SentinelApacheHttpClientBuilder(config).build();
回退(塊處理)
我們可以
ApacheHttpClientFallback
在
SentinelApacheHttpClientBuilder
預設配置中定義,根據實際場景來處理請求被阻塞,例如:
public class DefaultApacheHttpClientFallback implements ApacheHttpClientFallback {
@Override
public CloseableHttpResponse handle(HttpRequestWrapper request, BlockException e) {
// Just wrap and throw the exception.
throw new SentinelRpcException(e);
}
}