예제 #1
0
        /// <summary>
        /// Create channel
        /// </summary>
        /// <param name="configuration">Base configuration</param>
        /// <returns>Fresh channel</returns>
        private IModel DeclareChannel(RabbitConfigurationBase configuration)
        {
            // Connection to rabbit
            var factory = new ConnectionFactory
            {
                NetworkRecoveryInterval  = TimeSpan.FromSeconds(120),
                AutomaticRecoveryEnabled = true,
                TopologyRecoveryEnabled  = true
            };

            // Configuring virtual host
            if (!string.IsNullOrWhiteSpace(configuration.VirtualHost))
            {
                factory.VirtualHost = configuration.VirtualHost;
            }
            // Configuring port
            if (configuration.Port > 0)
            {
                factory.Port = configuration.Port;
            }
            // Configuring user
            if (!string.IsNullOrWhiteSpace(configuration.User))
            {
                factory.UserName = configuration.User;
            }
            // Configuring password
            if (!string.IsNullOrWhiteSpace(configuration.Password))
            {
                factory.Password = configuration.Password;
            }
            // Retunring the factory
            return(factory.CreateConnection(configuration.Hosts)
                   .CreateModel());
        }
예제 #2
0
 /// <summary>
 /// Convert base to <see cref="RabbitConsumerConfiguration"/>
 /// </summary>
 /// <param name="configuration">Base configuration</param>
 /// <param name="name">Name of the exchange/queue<</param>
 /// <param name="workers">Consumer workers count</param>
 /// <param name="batchSize">Grouping size for messages</param>
 /// <param name="retryIntervals">Retry intervals in milliseconds</param>
 /// <param name="dependencies">Dependencies <see cref="RabbitConfigurationDependency"/></param>
 /// <returns>Fresh instance of <see cref="RabbitConsumerConfiguration"/></returns>
 internal static RabbitConsumerConfiguration ToConsumerConfiguration(
     RabbitConfigurationBase configuration,
     string name,
     ushort workers              = 0,
     ushort batchSize            = 0,
     List <ulong> retryIntervals = null,
     List <RabbitConfigurationDependency> dependencies = null
     )
 {
     // Composing consumer configuration
     return(new RabbitConsumerConfiguration
     {
         Hosts = configuration.Hosts,
         VirtualHost = configuration.VirtualHost,
         Port = configuration.Port,
         User = configuration.User,
         Password = configuration.Password,
         Arguments = configuration.Arguments,
         Name = name,
         Workers = workers,
         BatchSize = batchSize,
         RetryIntervals = retryIntervals,
         Dependencies = dependencies
     });
 }
예제 #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="configuration">Base configuration</param>
 /// <param name="logger">Logger</param>
 /// <param name="name">Name of the exchange/queue</param>
 /// <param name="type">Type of the publisher exchange</param>
 /// <param name="headers">Publish headers</param>
 /// <param name="dependencies">Dependencies <see cref="RabbitConfigurationDependency"/></param>
 public RabbitPublisher(
     RabbitConfigurationBase configuration,
     ILogger logger = null,
     string name    = null,
     string type    = null,
     Dictionary <string, object> headers = null,
     List <RabbitConfigurationDependency> dependencies = null
     ) : this(
         RabbitConfigurationBase.ToPublisherConfiguration(configuration, name, type, headers, dependencies),
         logger
         )
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="configuration">Configuration base</param>
 /// <param name="logger">Logger</param>
 /// <param name="name">Name of the exchange/queue<</param>
 /// <param name="workers">Consumer workers count</param>
 /// <param name="batchSize">Grouping size for messages</param>
 /// <param name="retryIntervals">Retry intervals in milliseconds</param>
 /// <param name="dependencies">Dependencies <see cref="RabbitConfigurationDependency"/></param>
 public RabbitConsumer(
     RabbitConfigurationBase configuration,
     ILogger logger              = null,
     string name                 = null,
     ushort workers              = 0,
     ushort batchSize            = 0,
     List <ulong> retryIntervals = null,
     List <RabbitConfigurationDependency> dependencies = null
     ) : this(
         RabbitConfigurationBase.ToConsumerConfiguration(configuration, name, workers, batchSize, retryIntervals, dependencies),
         logger
         )
 {
 }
예제 #5
0
 /// <summary>
 /// Convert base to <see cref="RabbitPublisherConfiguration"/>
 /// </summary>
 /// <param name="configuration">Base configuration</param>
 /// <param name="name">Name of the exchange/queue</param>
 /// <param name="type">Type of the publisher exchange</param>
 /// <param name="headers">Publish headers</param>
 /// <param name="dependencies">Dependencies <see cref="RabbitConfigurationDependency"/></param>
 /// <returns>Fresh instance of <see cref="RabbitPublisherConfiguration"/></returns>
 internal static RabbitPublisherConfiguration ToPublisherConfiguration(
     RabbitConfigurationBase configuration,
     string name = null,
     string type = null,
     Dictionary <string, object> headers = null,
     List <RabbitConfigurationDependency> dependencies = null
     )
 {
     // Composing publisher configuration
     return(new RabbitPublisherConfiguration
     {
         Hosts = configuration.Hosts,
         VirtualHost = configuration.VirtualHost,
         Port = configuration.Port,
         User = configuration.User,
         Password = configuration.Password,
         Arguments = configuration.Arguments,
         Name = name,
         Type = type,
         Headers = headers,
         Dependencies = dependencies
     });
 }
예제 #6
0
        /// <summary>
        /// Base constructor
        /// </summary>
        /// <param name="configuration">Base configuration</param>
        /// <param name="logger">Logger</param>
        private RabbitBase(RabbitConfigurationBase configuration, ILogger logger = null)
        {
            // ...
            Logger   = logger;
            Channels = new List <IModel> {
            };
            if (configuration.Arguments != null)
            {
                Arguments = configuration.Arguments;
            }
            // Base fixings
            configuration.Dependencies ??= new List <RabbitConfigurationDependency> {
            };
            // Base validations
            var invalid = configuration == null ? "Configuration" :
                          configuration.Hosts == null || configuration.Hosts.Count == 0 ? "Hosts" :
                          string.IsNullOrWhiteSpace(configuration.Name) ? "Name" :
                          string.Empty;

            if (!string.IsNullOrWhiteSpace(invalid))
            {
                throw new ArgumentException(RabbitAnnotations.Exception.FactoryArgumentExceptionGeneral, invalid);
            }
        }