Exemplo n.º 1
0
        // RECEBE AS OPERAÇÕES DOS BROKERS
        public static void receber()
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };
            var connection = factory.CreateConnection();
            var channel    = connection.CreateModel();

            channel.QueueDeclare("BROKER", true, false, false, null);
            Console.WriteLine("ONLINE. Para parar pressione CTRL+C");
            var consumidor = new EventingBasicConsumer(channel);

            consumidor.Received += (model, ea) =>
            {
                var body    = ea.Body;
                var message = Encoding.UTF8.GetString(body);

                String[] topic = message.Split('_');
                if (topic.Length > 1)
                {
                    Console.WriteLine("Recebida: '<" + message + ">'");
                    try
                    {
                        if (topic[0].Contains("info"))
                        {
                            // consultar(topic[0], topic[1]);
                        }
                        if (topic[0].Contains("venda"))
                        {
                            VendasController vendas  = new VendasController();
                            Venda            venda   = new Venda();
                            string           codigo  = topic[0].Substring(6, 5);
                            String[]         valores = topic[1].Split(';');
                            venda.valor      = float.Parse(valores[0]);
                            venda.quantidade = float.Parse(valores[1]);
                            vendas.Create(venda, codigo);
                        }
                        if (topic[0].Contains("compra"))
                        {
                            ComprasController compras = new ComprasController();
                            Compra            compra  = new Compra();
                            string            codigo  = topic[0].Substring(7, 5);
                            String[]          valores = topic[1].Split(';');
                            compra.valor      = float.Parse(valores[0]);
                            compra.quantidade = float.Parse(valores[1]);
                            compras.Create(compra, codigo);
                        }
                    }
                    finally
                    {
                        channel.BasicAck(ea.DeliveryTag, false);
                    }
                }
                else
                {
                    channel.BasicAck(ea.DeliveryTag, false);
                    return;
                }
            };
            channel.BasicConsume(queue: "BROKER",
                                 autoAck: true,
                                 consumer: consumidor);
        }