public void salvaHistorico(Historico h)
        {
            String query = "INSERT INTO veiculo (dados) VALUES(@dados)";

            try
            {
                SqlConnection conexao = new SqlConnection(this.dadosConexao);
                SqlCommand    comando = new SqlCommand(query, conexao);
                comando.Parameters.Add("@dados", SqlDbType.Text);
                comando.Parameters["@dados"].Value = h.getJsonRastreio();
                comando.Connection.Open();
                int rows = comando.ExecuteNonQuery(); //numero de linhas afetadas pela query
                comando.Dispose();
                conexao.Close();
                if (rows <= 0)
                {
                    X9.OQueRolouNaParada(1, query, dadosConexao, null);
                }
                if (!Ambiente.isProduction()) //modo verboso ativo fora de produção. (spam info)
                {
                    X9.ShowInfo(4, h.getJsonRastreio());
                }
            }
            catch (Exception e)
            {
                if (
                    e.Message.Equals("Invalid object name 'veiculo'.") &&
                    !Ambiente.isProduction() &&
                    errorCount == 0
                    )
                {
                    errorCount++;
                    CreateTable();     // SYNC DE ORM É PARA OS FRACOS! Aqui o sistema é bruto.
                    salvaHistorico(h); // caberia um goto aqui fácil.. mas vamos de recursão.
                }
                else
                {
                    if (e.Message.Equals("Invalid object name 'veiculo'."))
                    {
                        X9.OQueRolouNaParada(2, this.dadosConexao, null, null);
                    }
                    else
                    {
                        X9.OQueRolouNaParada(3, e.Message, this.dadosConexao, null);
                    }
                }
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            ConnectionFactory factory;
            IConnection       connection;
            IModel            channel;
            String            queueName;

            Console.Clear();

            if (Ambiente.isProduction())
            //modo de produção, saída mínima de texto no terminal.
            {
                try
                {
                    factory = new ConnectionFactory()
                    {
                        HostName = RMQHost
                    };
                    connection = factory.CreateConnection();
                    channel    = connection.CreateModel();
                    channel.ExchangeDeclare(exchange: RMQTopic, type: "topic", durable: true);
                    queueName = channel.QueueDeclare(RMQChannel).QueueName;
                    channel.QueueBind(queue: queueName, exchange: RMQTopic, routingKey: RMQKey);
                    X9.ShowInfo(1, null);
                    EventingBasicConsumer consumidorEventos = new EventingBasicConsumer(channel);
                    consumidorEventos.Received += (model, ea) =>
                    {
                        byte[]    body    = ea.Body;
                        String    message = Encoding.UTF8.GetString(body);
                        Historico h       = new Historico();
                        h.setJsonRastreio(message);
                        dao.salvaHistorico(h);
                    };
                    channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumidorEventos);
                }
                catch (Exception e)
                {
                    X9.OQueRolouNaParada(e, 1);
                }
            }


            else
            //fora do ambiente de produção. SPAM INFO rola solto
            {
                try
                {
                    factory = new ConnectionFactory()
                    {
                        HostName = RMQHost
                    };
                    connection = factory.CreateConnection();
                    channel    = connection.CreateModel();
                    channel.ExchangeDeclare(exchange: RMQTopic, type: "topic", durable: true);
                    queueName = channel.QueueDeclare(RMQChannel).QueueName;
                    channel.QueueBind(queue: queueName, exchange: RMQTopic, routingKey: RMQKey);
                    X9.ShowInfo(2, null);
                    EventingBasicConsumer consumidorEventos = new EventingBasicConsumer(channel);
                    consumidorEventos.Received += (model, ea) =>
                    {
                        byte[] body    = ea.Body;
                        String message = Encoding.UTF8.GetString(body);
                        X9.ShowInfo(3, message);
                        Historico h = new Historico();
                        h.setJsonRastreio(message);
                        dao.salvaHistorico(h);
                    };
                    channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumidorEventos);
                }
                catch (Exception e)
                {
                    X9.OQueRolouNaParada(e, 1);
                }
            }
        }