From 4d8da8695039509dfb3a7a81f1e9d5b4656556ac Mon Sep 17 00:00:00 2001 From: geffzhang Date: Sat, 3 Jun 2017 22:57:45 +0800 Subject: [PATCH] refactor: Refactor HttpClientHttpRequester Httpclient queue --- .../Requester/HttpClientHttpRequester.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Ocelot/Requester/HttpClientHttpRequester.cs b/src/Ocelot/Requester/HttpClientHttpRequester.cs index 8188ae0c..a7f747d4 100644 --- a/src/Ocelot/Requester/HttpClientHttpRequester.cs +++ b/src/Ocelot/Requester/HttpClientHttpRequester.cs @@ -22,7 +22,9 @@ namespace Ocelot.Requester public async Task> GetResponse(Request.Request request) { - IHttpClient httpClient = GetHttpClient(request); + var cacheKey = GetCacheKey(request); + + IHttpClient httpClient = GetHttpClient(cacheKey); try { var response = await httpClient.SendAsync(request.HttpRequestMessage); @@ -42,32 +44,28 @@ namespace Ocelot.Requester { return new ErrorResponse(new UnableToCompleteRequestError(exception)); } + finally + { + _cacheHandlers.Set(cacheKey, httpClient, TimeSpan.FromHours(24)); + } } - private IHttpClient GetHttpClient(Request.Request request) + private IHttpClient GetHttpClient(string cacheKey) { var builder = new HttpClientBuilder(); - var cacheKey = GetCacheKey(request, builder); + var httpClient = _cacheHandlers.Get(cacheKey); if (httpClient == null) { httpClient = builder.Create(); } - _cacheHandlers.Set(cacheKey, httpClient, TimeSpan.FromHours(6)); return httpClient; } - private string GetCacheKey(Request.Request request, IHttpClientBuilder builder) + private string GetCacheKey(Request.Request request) { string baseUrl = $"{request.HttpRequestMessage.RequestUri.Scheme}://{request.HttpRequestMessage.RequestUri.Authority}"; - - if (request.IsQos) - { - builder.WithQos(request.QosProvider, _logger); - baseUrl = $"{baseUrl}{request.QosProvider.CircuitBreaker.CircuitBreakerPolicy.PolicyKey}"; - } - return baseUrl; } }