seninel部署
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
于玉桔 2b68a6c062
Add OkHttp integration (#1456)
4 年前
..
src Add OkHttp integration (#1456) 4 年前
README.md Add OkHttp integration (#1456) 4 年前
pom.xml Add OkHttp integration (#1456) 4 年前

README.md

Sentinel OkHttp 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-okhttp-adapter</artifactId>
    <version>x.y.z</version>
</dependency>

We can add the SentinelOkHttpInterceptor interceptor when OkHttpClient at initialization, for example:

OkHttpClient client = new OkHttpClient.Builder()
        .addInterceptor(new SentinelOkHttpInterceptor())
        .build();

Configuration

  • SentinelOkHttpConfig configuration:
name description type default value
extractor custom resource extractor OkHttpResourceExtractor DefaultOkHttpResourceExtractor
fallback handle request when it is blocked OkHttpFallback DefaultOkHttpFallback

extractor (resource extractor)

We can define OkHttpResourceExtractor to custom resource extractor replace DefaultOkHttpResourceExtractor, for example: okhttp:GET:ip:port/okhttp/back/1 ==> /okhttp/back/{id}

OkHttpResourceExtractor extractor = (request, connection) -> {
    String resource = request.url().toString();
    String regex = "/okhttp/back/";
    if (resource.contains(regex)) {
        resource = resource.substring(0, resource.indexOf(regex) + regex.length()) + "{id}";
    }
    return resource;
};
SentinelOkHttpConfig.setExtractor(extractor);

fallback (Block handling)

We can define OkHttpFallback to handle request is blocked according to the actual scenario, for example:

public class DefaultOkHttpFallback implements OkHttpFallback {

    @Override
    public Response handle(Request request, Connection connection, BlockException e) {
        // Just wrap and throw the exception.
        throw new SentinelRpcException(e);
    }
}