public Client(IServiceConnectConnection connection, ITransportSettings transportSettings)
        {
            _connection        = connection;
            _transportSettings = transportSettings;

            _maxRetries         = transportSettings.MaxRetries;
            _autoDelete         = transportSettings.ClientSettings.ContainsKey("AutoDelete") && (bool)transportSettings.ClientSettings["AutoDelete"];
            _errorsDisabled     = transportSettings.DisableErrors;
            _prefetchCount      = transportSettings.ClientSettings.ContainsKey("PrefetchCount") ? Convert.ToUInt16((int)transportSettings.ClientSettings["PrefetchCount"]) : Convert.ToUInt16(20);
            _disablePrefetch    = transportSettings.ClientSettings.ContainsKey("DisablePrefetch") && (bool)transportSettings.ClientSettings["DisablePrefetch"];
            _retryCount         = transportSettings.ClientSettings.ContainsKey("RetryCount") ? Convert.ToUInt16((int)transportSettings.ClientSettings["RetryCount"]) : Convert.ToUInt16(60);
            _retryTimeInSeconds = transportSettings.ClientSettings.ContainsKey("RetrySeconds") ? Convert.ToUInt16((int)transportSettings.ClientSettings["RetrySeconds"]) : Convert.ToUInt16(10);
        }
Beispiel #2
0
        public void StartConsuming(string queueName, IList <string> messageTypes, ConsumerEventHandler eventHandler, IConfiguration config)
        {
            _transportSettings = config.TransportSettings;
            _durable           = !_transportSettings.ClientSettings.ContainsKey("Durable") || (bool)_transportSettings.ClientSettings["Durable"];
            _exclusive         = _transportSettings.ClientSettings.ContainsKey("Exclusive") && (bool)_transportSettings.ClientSettings["Exclusive"];
            _autoDelete        = _transportSettings.ClientSettings.ContainsKey("AutoDelete") && (bool)_transportSettings.ClientSettings["AutoDelete"];
            _queueArguments    = _transportSettings.ClientSettings.ContainsKey("Arguments") ? (IDictionary <string, object>)_transportSettings.ClientSettings["Arguments"] : new Dictionary <string, object>();
            _retryDelay        = _transportSettings.RetryDelay;

            if (_connection == null)
            {
                _connection = new Connection(config.TransportSettings, queueName, _logger);
            }

            if (_model == null)
            {
                _model = _connection.CreateModel();
            }

            // Configure exchanges
            foreach (string messageType in messageTypes)
            {
                ConfigureExchange(messageType, "fanout");
            }

            // Configure queue
            ConfigureQueue(queueName);

            // Purge all messages on queue
            if (_transportSettings.PurgeQueueOnStartup)
            {
                _logger.Debug("Purging queue");
                _model.QueuePurge(queueName);
            }

            // Configure retry queue
            ConfigureRetryQueue(queueName);

            // Configure Error Queue/Exchange
            var errorExchange = ConfigureErrorExchange();
            var errorQueue    = ConfigureErrorQueue();

            if (!string.IsNullOrEmpty(errorExchange))
            {
                _model.QueueBind(errorQueue, errorExchange, string.Empty, null);
            }

            // Configure Audit Queue/Exchange
            if (_transportSettings.AuditingEnabled)
            {
                var auditExchange = ConfigureAuditExchange();
                var auditQueue    = ConfigureAuditQueue();

                if (!string.IsNullOrEmpty(auditExchange))
                {
                    _model.QueueBind(auditQueue, auditExchange, string.Empty, null);
                }
            }

            var clientCount = config.Clients;

            for (int i = 0; i < clientCount; i++)
            {
                var client = new Client(_connection, config.TransportSettings, _logger);
                client.StartConsuming(eventHandler, queueName);
                foreach (string messageType in messageTypes)
                {
                    client.ConsumeMessageType(messageType);
                }
                _clients.Add(client);
            }
        }
Beispiel #3
0
 public Consumer(IServiceConnectConnection connection, ILogger logger)
 {
     _connection = connection;
     _logger     = logger;
 }
Beispiel #4
0
 public Consumer(IServiceConnectConnection connection)
 {
     _connection = connection;
 }