seninel部署
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
于玉桔 38911c5ec1
Adapter: Support Apache HttpClient (#1455)
4 年之前
..
src Adapter: Support Apache HttpClient (#1455) 4 年之前
README.md Adapter: Support Apache HttpClient (#1455) 4 年之前
pom.xml Adapter: Support Apache HttpClient (#1455) 4 年之前

README.md

Sentinel Apache Httpclient Adapter

Introduction

Sentinel provides integration for OkHttp client to enable flow control for web requests.

Add the following dependency in pom.xml (if you are using Maven):

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-apache-httpclient-adapter</artifactId>
    <version>x.y.z</version>
</dependency>

We can use the SentinelApacheHttpClientBuilder when CloseableHttpClient at initialization, for example:

CloseableHttpClient httpclient = new SentinelApacheHttpClientBuilder().build();

If we want to add some additional configurations, we can refer to the following code

HttpClientBuilder builder = new SentinelApacheHttpClientBuilder();
//builder Other Definitions
CloseableHttpClient httpclient = builder.build();

Configuration

  • SentinelApacheHttpClientConfig configuration:
name description type default value
prefix customize resource prefix String httpclient:
extractor customize resource extractor ApacheHttpClientResourceExtractor DefaultApacheHttpClientResourceExtractor
fallback handle request when it is blocked ApacheHttpClientFallback DefaultApacheHttpClientFallback

extractor (resource extractor)

We can define ApacheHttpClientResourceExtractor to customize resource extractor replace DefaultApacheHttpClientResourceExtractor at SentinelApacheHttpClientBuilder default config, for example: httpclient:GET:/httpclient/back/1 ==> httpclient:GET:/httpclient/back/{id}

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

fallback (Block handling)

We can define ApacheHttpClientFallback at SentinelApacheHttpClientBuilder default config, to handle request is blocked according to the actual scenario, for example:

public class DefaultApacheHttpClientFallback implements ApacheHttpClientFallback {

    @Override
    public CloseableHttpResponse handle(HttpRequestWrapper request, BlockException e) {
        // Just wrap and throw the exception.
        throw new SentinelRpcException(e);
    }
}