seninel部署
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
Eric Zhao e58267012d Bump version to 1.8.1-SNAPSHOT 4 роки тому
..
src Adapter: Support Apache HttpClient (#1455) 4 роки тому
README.md Adapter: Support Apache HttpClient (#1455) 4 роки тому
pom.xml Bump version to 1.8.1-SNAPSHOT 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);
    }
}