于玉桔 2b68a6c062 Add OkHttp integration (#1456) | il y a 4 ans | |
---|---|---|
.. | ||
src | il y a 4 ans | |
README.md | il y a 4 ans | |
pom.xml | il y a 4 ans |
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();
SentinelOkHttpConfig
configuration:name | description | type | default value |
---|---|---|---|
extractor | custom resource extractor | OkHttpResourceExtractor |
DefaultOkHttpResourceExtractor |
fallback | handle request when it is blocked | OkHttpFallback |
DefaultOkHttpFallback |
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);
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);
}
}