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(); } }
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(); } }