public static void PublishPassengersRequest(PassengersRequest request) => Publish(passengersRequestsQueueName, request);
public Gates() { var factory = new ConnectionFactory() { HostName = "206.189.60.128", UserName = "******", Password = "******" }; connection = factory.CreateConnection(); channel = connection.CreateModel(); channel.QueueDeclare(CheckInToGatesQueue, true, false, false, null); channel.QueueDeclare(VihiclesToGatesQueue, true, false, false, null); channel.QueueDeclare(GatesToVihiclesQueue, true, false, false); checkInConsumer = new EventingBasicConsumer(channel); checkInConsumer.Received += (model, ea) => { var body = ea.Body.ToArray(); GatePlacement placement = GatePlacement.Deserialize(body); var info = new PassengersInfo(placement.FlightId, placement.GateNum, placement.IsVip); if (passengers.ContainsKey(info)) { ++passengers[info]; } else { passengers.Add(info, 1); } Console.WriteLine($"[{DateTime.Now}] A new passenger has arrived:" + $"\nPassenger ID:\t{placement.PassengerId}" + $"\nIs VIP:\t{placement.IsVip}" + $"\nFlight ID:\t{placement.FlightId}" + $"\nGate number:\t{placement.GateNum}"); }; channel.BasicConsume(CheckInToGatesQueue, true, checkInConsumer); vihicleConsumer = new EventingBasicConsumer(channel); vihicleConsumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var request = PassengersRequest.Deserialize(body); Console.WriteLine($"[{DateTime.Now}] A new request has come"); var info = new PassengersInfo(request.FlightId, request.GateNum, request.IsVip); int count = passengers[info]; var response = new Passengers(request.VehicleId, request.GateNum, request.IsVip, count); channel.BasicPublish("", GatesToVihiclesQueue, null, response.Serialize()); Console.WriteLine($"{DateTime.Now} The response has been sent"); passengers.Remove(info); }; channel.BasicConsume(VihiclesToGatesQueue, true, vihicleConsumer); }