Exemple #1
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile($"appsettings.json");

            _configuration = builder.Build();

            // Para este exemplo foi criado um container Docker baseado
            // em uma imagem do RabbitMQ. Segue o comando para geração
            // desta estrutura:
            // docker run -d --hostname rabbit-local --name testes-rabbitmq -p 6672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=testes -e RABBITMQ_DEFAULT_PASS=Testes2018! rabbitmq:3-management-alpine
            var rabbitMQConfigurations = new RabbitMQConfigurations();

            new ConfigureFromConfigurationOptions <RabbitMQConfigurations>(
                _configuration.GetSection("RabbitMQConfigurations"))
            .Configure(rabbitMQConfigurations);

            _seleniumConfigurations = new SeleniumConfigurations();
            new ConfigureFromConfigurationOptions <SeleniumConfigurations>(
                _configuration.GetSection("SeleniumConfigurations"))
            .Configure(_seleniumConfigurations);

            var factory = new ConnectionFactory()
            {
                HostName = rabbitMQConfigurations.HostName,
                Port     = rabbitMQConfigurations.Port,
                UserName = rabbitMQConfigurations.UserName,
                Password = rabbitMQConfigurations.Password
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "CarregarCotacoes",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += Consumer_Received;
                    channel.BasicConsume(queue: "CarregarCotacoes",
                                         autoAck: true,
                                         consumer: consumer);

                    Console.WriteLine("Aguardando mensagens para processamento");
                    Console.WriteLine("Pressione uma tecla para encerrar...");
                    Console.ReadKey();
                }
        }
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile($"appsettings.json");

            _configuration = builder.Build();

            var serviceBusConfigurations = new ServiceBusConfigurations();

            new ConfigureFromConfigurationOptions <ServiceBusConfigurations>(
                _configuration.GetSection("ServiceBusConfigurations"))
            .Configure(serviceBusConfigurations);

            _seleniumConfigurations = new SeleniumConfigurations();
            new ConfigureFromConfigurationOptions <SeleniumConfigurations>(
                _configuration.GetSection("SeleniumConfigurations"))
            .Configure(_seleniumConfigurations);


            var client = new QueueClient(
                serviceBusConfigurations.ConnectionString,
                serviceBusConfigurations.QueueName,
                ReceiveMode.ReceiveAndDelete);

            try
            {
                client.RegisterMessageHandler(
                    async(message, token) =>
                {
                    ProcessarCargaCotacoes(message);
                },
                    new MessageHandlerOptions(
                        async(e) =>
                {
                    Console.WriteLine("[Erro] " +
                                      e.Exception.GetType().FullName + " " +
                                      e.Exception.Message);
                }
                        )
                    );

                Console.ReadKey();
            }
            finally
            {
                client.CloseAsync().Wait();
            }
        }
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile($"appsettings.json");

            _configuration = builder.Build();

            var rabbitMQConfigurations = new RabbitMQConfigurations();

            new ConfigureFromConfigurationOptions <RabbitMQConfigurations>(
                _configuration.GetSection("RabbitMQConfigurations"))
            .Configure(rabbitMQConfigurations);

            _seleniumConfigurations = new SeleniumConfigurations();
            new ConfigureFromConfigurationOptions <SeleniumConfigurations>(
                _configuration.GetSection("SeleniumConfigurations"))
            .Configure(_seleniumConfigurations);

            var factory = new ConnectionFactory()
            {
                HostName = rabbitMQConfigurations.HostName,
                Port     = rabbitMQConfigurations.Port,
                UserName = rabbitMQConfigurations.UserName,
                Password = rabbitMQConfigurations.Password
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "CarregarCotacoes",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += Consumer_Received;
                    channel.BasicConsume(queue: "CarregarCotacoes",
                                         autoAck: true,
                                         consumer: consumer);

                    Console.WriteLine("Aguardando mensagens para processamento");
                    Console.WriteLine("Pressione uma tecla para encerrar...");
                    Console.ReadKey();
                }
        }