Resilience4j Retrofit介绍

x33g5p2x  于2022-03-25 发布在 Java  
字(1.5k)|赞(0)|评价(0)|浏览(240)

Retrofit

Android和Java的类型安全HTTP客户端。https://square.github.io/refrofit/

断路器

断路器http客户端调用是基于CircuitBreakerCallAdapter的断路器实例。

// 创建断路器
private final CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName");

// 创建retrofit实例使用CircuitBrealer调用适配器
Retrofit retrofit = new Retrofit.Builder()
                .addCallAdapterFactory(CircuitBreakerCallAdapter.of(circuitBreaker))
                .baseUrl("http://localhost:8080/")
                .build();

// 获取你的服务实例使用断路器来创建.
RetrofitService service = retrofit.create(RetrofitService.class);

等待时间

要触发超时断开电路,应在传递到Retrofit.Builder

//创建断路器
private final CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName");

final long TIMEOUT = 300; // ms
OkHttpClient client = new OkHttpClient.Builder()
        .connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS)
        .readTimeout(TIMEOUT, TimeUnit.MILLISECONDS)
        .writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS)
        .build();

Retrofit retrofit = new Retrofit.Builder()
        .addCallAdapterFactory(CircuitBreakerCallAdapter.of(circuitBreaker))
        .baseUrl("http://localhost:8080/")
        .client(client)
        .build();

错误响应

Retrofit retrofit = new Retrofit.Builder()
        .addCallAdapterFactory(CircuitBreakerCallAdapter.of(circuitBreaker, (r) -> r.code() < 500));
        .baseUrl("http://localhost:8080/")
        .build();

限流器

http客户端调用的速率限制基于传递给RateLimiterCallAdapter的配置。

RateLimiter rateLimiter = RateLimiter.ofDefaults("testName");

Retrofit retrofit = new Retrofit.Builder()
        .addCallAdapterFactory(RateLimiterCallAdapter.of(rateLimiter))
        .baseUrl("http://localhost:8080/")
        .build();

如果在速率限制器定义的时间段内超过了调用数,则会返回一个HTTP 429响应(请求太多)。

相关文章

微信公众号

最新文章

更多