Esempio n. 1
0
        static void Main()
        {
            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);

            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: "AzureNaPratica",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

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

                    Console.WriteLine("Aguardando mensagens para processamento");

                    // Tratando o encerramento da aplicação com
                    // Control + C ou Control + Break
                    Console.CancelKeyPress += (o, e) =>
                    {
                        Console.WriteLine("Saindo...");

                        // Libera a continuação da thread principal
                        _waitHandle.Set();
                        e.Cancel = true;
                    };

                    // Aguarda que o evento CancelKeyPress ocorra
                    _waitHandle.WaitOne();
                }
        }
Esempio n. 2
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);

            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: "TestesASPNETCore",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

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

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