private void OnAirplaneRequest(AirplaneRequest request) { string requestTypeStr = Enum.GetName(typeof(RequestType), request.RequestType); Console.WriteLine($"{DateTime.Now}: got request from airplane #{request.Id}, {requestTypeStr}"); int site = 0; if (!site1Empty && !site2Empty) { oneSiteFreeHandle.Reset(); requestsQueue.Enqueue(request); oneSiteFreeHandle.WaitOne(); } if (site1Empty) { site = 1; site1Empty = false; } else if (site2Empty) { site = 2; site2Empty = false; } Console.WriteLine($"{DateTime.Now}: request of airplane #{request.Id} fulfilled, site #{site}"); var vehicles = GetVehiclesOrder(request); foreach (var vehicle in vehicles) { var vehRequest = new VehicleRequest { VehicleType = vehicle, Site = site }; _mqClient.PublishToQueue(_vehicleRequestsQueueName, vehRequest); } }