public int GetCustomerRatingData(string accountNumber) { try { var result = MemoryCache.Get("CustomerRating_" + accountNumber); if (result != null) { return((int)result); } var customerRatingRequest = new CustomerRatingRequest { AccountNumber = accountNumber }; var policy = Policy.Handle <TimeoutException>().Retry(2); var customerRating = policy.Execute(() => _productQuery.GetCustomerRating(customerRatingRequest)); MemoryCache.Add("CustomerRating_" + accountNumber, customerRating, new CacheItemPolicy { AbsoluteExpiration = new DateTimeOffset(DateTime.UtcNow.AddMinutes(60)) }); return(customerRating); } catch (TimeoutException ex) { Logger.Error(ex); return(0); } catch (Exception ex) { Logger.Error(ex); return(0); } }