Sentinel Apache Httpclient 适配器介绍

简介: Sentinel 为 OkHttp 客户端提供集成以启用 Web 请求的流量控制。

添加以下依赖项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 配置:
名称 描述 类型 默认值
字首 自定义资源前缀 String httpclient:
提取器 自定义资源提取器 ApacheHttpClientResourceExtractor DefaultApacheHttpClientResourceExtractor
倒退 当请求被阻塞时处理请求 ApacheHttpClientFallback DefaultApacheHttpClientFallback

提取器(资源提取器)

我们可以在默认配置中定义ApacheHttpClientResourceExtractor自定义资源提取器替换,例如: httpclient:GET:/httpclient/back/1 ==> httpclient:GET:/httpclient/back/{id}DefaultApacheHttpClientResourceExtractorSentinelApacheHttpClientBuilder


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();


回退(块处理)

我们可以ApacheHttpClientFallbackSentinelApacheHttpClientBuilder默认配置中定义,根据实际场景来处理请求被阻塞,例如:

public class DefaultApacheHttpClientFallback implements ApacheHttpClientFallback {
    @Override
    public CloseableHttpResponse handle(HttpRequestWrapper request, BlockException e) {
        // Just wrap and throw the exception.
        throw new SentinelRpcException(e);
    }
}
相关文章
|
5月前
|
JSON 前端开发 API
Apache HttpClient调用Spring3 MVC Restful Web API演示
Apache HttpClient调用Spring3 MVC Restful Web API演示
43 1
|
6月前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
370 0
|
6月前
|
数据采集 前端开发 Java
利用Scala与Apache HttpClient实现网络音频流的抓取
利用Scala与Apache HttpClient实现网络音频流的抓取
|
6月前
|
数据采集 安全 Java
Kotlin+Apache HttpClient+代理服务器=高效的eBay图片爬虫
本文将为你介绍一种高效的eBay图片爬虫的实现方式,让你可以用Kotlin+Apache HttpClient+代理服务器的组合来轻松地下载eBay的图片。
Kotlin+Apache HttpClient+代理服务器=高效的eBay图片爬虫
|
6月前
|
Java Apache
Apache HttpClient 4.5设置超时时间
Apache HttpClient 4.5设置超时时间
221 0
|
Arthas Java 测试技术
一次NSF FeignClient支持Apache HttpClient的优化
一次NSF FeignClient支持Apache HttpClient的优化
292 2
|
负载均衡 Dubbo NoSQL
Sentinel Dubbo 适配器看限流与熔断(实战思考篇)
Sentinel Dubbo 适配器看限流与熔断(实战思考篇)
Sentinel Dubbo 适配器看限流与熔断(实战思考篇)
|
Java Apache Maven
Apache HttpComponents 之 Httpclient 参考
Apache HttpComponents Apache HttpComponents 项目负责创建和维护一个基于 HTTP 和相关协议的底层 Java 组件工具集。
592 0
Apache HttpComponents 之 Httpclient 参考
|
Java Apache Android开发

推荐镜像

更多