Пример #1
0
 public void Dispose()
 {
     pokeDB   = null;
     pokeCtrl = null;
 }
Пример #2
0
    public static void Main()
    {
        pokeDB   = new PokeDB(@"..\..\..\Data\pokemons.csv");
        pokeCtrl = new PokeControl();

        var factory = new ConnectionFactory()
        {
            HostName = "localhost"
        };

        using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "SearchType", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "ListMultType", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "ListAllLegendary", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "SearchName", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "ListHeaders", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "SearchHeader", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.QueueDeclare(queue: "Battle", durable: false, exclusive: false, autoDelete: false, arguments: null);
                channel.BasicQos(0, 1, false);
                var consumer = new EventingBasicConsumer(channel);
                channel.BasicConsume(queue: "SearchType", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "ListMultType", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "ListAllLegendary", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "SearchName", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "ListHeaders", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "SearchHeader", autoAck: false, consumer: consumer);
                channel.BasicConsume(queue: "Battle", autoAck: false, consumer: consumer);
                Console.WriteLine("Awaiting requests");

                consumer.Received += (model, ea) =>
                {
                    string response = null;

                    var body       = ea.Body;
                    var props      = ea.BasicProperties;
                    var replyProps = channel.CreateBasicProperties();
                    replyProps.CorrelationId = props.CorrelationId;

                    try
                    {
                        var message = Encoding.UTF8.GetString(body);

                        Console.WriteLine("In: {0} - {1}", ea.RoutingKey, message);

                        //Create a stream to serialize the object to.
                        MemoryStream ms = new MemoryStream();

                        Object resp = CreateResponse(ea.RoutingKey, message);

                        // Serializer the User object to the stream.
                        DataContractJsonSerializer ser = new DataContractJsonSerializer((resp.GetType()));
                        ser.WriteObject(ms, resp);
                        byte[] json = ms.ToArray();
                        ms.Close();
                        response = Encoding.UTF8.GetString(json, 0, json.Length);
                    }
                    catch (Exception e)
                    {
                        response = "Error: " + e.Message;
                    }
                    finally
                    {
                        Console.WriteLine("Out: {0}", response);
                        var responseBytes = Encoding.UTF8.GetBytes(response);
                        channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: responseBytes);
                        channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                    }
                };

                Console.WriteLine("Press [enter] to exit.");
                Console.ReadLine();
            }
    }
Пример #3
0
 public Tests()
 {
     pokeDB             = new PokeDB(@"..\..\..\..\PokeBackend\Data\pokemons.csv");
     pokeCtrl           = new PokeControl(8);
     pokeCtrlManyRounds = new PokeControl(1000);
 }