コード例 #1
0
        private async Task <IActionResult> ProcessRequest(RequestQueueItem.ApiEndpoint endpoint, IActionResult result)
        {
            var queueItem      = new RequestQueueItem(Request, endpoint);
            var enqueuResponse = _requestQueue.Enqueue(queueItem);

            if (enqueuResponse != EnqueueResponse.Ok)
            {
                var response =
                    StatusCode(TooManyRequestHttpCode, $"Too many requests. {enqueuResponse} occured.");
                LogMessage(LogLevel.Error, response);
                return(response);
            }

            await Task.Delay(_random.Next(500, 2000));

            LogMessage(LogLevel.Information, result);
            _requestQueue.Dequeu();

            return(result);
        }