seninel部署
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
Eric Zhao fca70646ad Bump version to 1.8.2-SNAPSHOT vor 3 Jahren
..
src Refactor config mechanism for OkHttp adapter and polish related code vor 4 Jahren
README.md Refactor config mechanism for OkHttp adapter and polish related code vor 4 Jahren
pom.xml Bump version to 1.8.2-SNAPSHOT vor 3 Jahren

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(new SentinelOkHttpConfig()))
        .build();

Configuration

SentinelOkHttpConfig configuration:

name description type default value
resourcePrefix customized resource name prefix String okhttp:
resourceExtractor customized resource extractor OkHttpResourceExtractor DefaultOkHttpResourceExtractor
fallback handle request when it is blocked OkHttpFallback DefaultOkHttpFallback

Resource Extractor

We can define OkHttpResourceExtractor to customize the logic of extracting resource name from the HTTP request. 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;
};

The pattern of default resource name extractor is ${HTTP_METHOD}:${URL} (e.g. GET:/foo).

Fallback (Block handling)

We can define OkHttpFallback to handle blocked request. For example:

public class DefaultOkHttpFallback implements OkHttpFallback {

    @Override
    public Response handle(Request request, Connection connection, BlockException e) {
        return new Response(myErrorBuilder);
    }
}