作者热门文章
- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
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响应(请求太多)。
我在 NodeJS 中的多台计算机上的服务器端服务中使用 Resilient。 弹性客户端调用的 API 之一受到速率限制。受到速率限制的请求会在响应中收到特定的 header /值,因此很容易判断何
我是一名优秀的程序员,十分优秀!