private static void ValidarConfiguracao(RabbitHostConfiguration rabbitMQConfiguration)
 {
     if (string.IsNullOrEmpty(rabbitMQConfiguration.HostName) ||
         string.IsNullOrEmpty(rabbitMQConfiguration.UserName) ||
         string.IsNullOrEmpty(rabbitMQConfiguration.Password) ||
         rabbitMQConfiguration.Port < 1)
     {
         throw new ArgumentException("A configuração da section RabbitMQConfiguration do arquivo appsetings.json está incorreta");
     }
 }
        private void Configurar(RabbitHostConfiguration rabbitMQConfiguration)
        {
            ValidarConfiguracao(rabbitMQConfiguration);

            ConnectionFactory = new ConnectionFactory()
            {
                HostName = rabbitMQConfiguration.HostName,
                Port     = rabbitMQConfiguration.Port,
                UserName = rabbitMQConfiguration.UserName,
                Password = rabbitMQConfiguration.Password
            };
        }
 public static void AddSubscribeSyncQueue <T>(
     this IServiceCollection services,
     RabbitHostConfiguration rabbitMQHostConfiguration,
     RabbitInfoQueueConfiguration rabbitMQInfoQueueConfiguration,
     ICommandSyncHandler <T> handler)
 {
     AddSubscribeSyncQueue(handler,
                           rabbitMQHostConfiguration.HostName,
                           rabbitMQHostConfiguration.Port,
                           rabbitMQHostConfiguration.UserName,
                           rabbitMQHostConfiguration.Password,
                           rabbitMQInfoQueueConfiguration.ExchangeName,
                           rabbitMQInfoQueueConfiguration.ExchangeType,
                           rabbitMQInfoQueueConfiguration.RoutingKey,
                           rabbitMQInfoQueueConfiguration.QueueName,
                           rabbitMQInfoQueueConfiguration.NumberOfWorkroles,
                           rabbitMQInfoQueueConfiguration.CreateDeadLetterQueue);
 }
 public static void AddQueuePublishScoped(this IServiceCollection services, RabbitHostConfiguration rabbitMQConfiguration)
 {
     services.AddScoped <IQueuePublish>(c => new QueuePublish(rabbitMQConfiguration));
 }
 public static void AddQueuePublishTransient(this IServiceCollection services, RabbitHostConfiguration rabbitMQConfiguration)
 {
     services.AddTransient <IQueuePublish>(c => new QueuePublish(rabbitMQConfiguration));
 }
 public QueuePublish(RabbitHostConfiguration rabbitMQConfiguration)
 {
     Configurar(rabbitMQConfiguration);
 }