Example #1
0
        public RabbitMQService(string connectionString, string hostName, string queueName, string userName, string password, int port, string deadLetterExchangeName)
            : this(connectionString, hostName, userName, password, port)
        {
            _rabbitMQModel = new RabbitMQModel(_model);

            _deadLetterExchangeName = deadLetterExchangeName;
            _queueName = queueName ?? throw new ArgumentNullException(nameof(queueName));

            Dictionary <string, object> args = new Dictionary <string, object>();

            // Create dead letter queue
            if (!string.IsNullOrEmpty(_deadLetterExchangeName))
            {
                string deadLetterQueueName = string.Format("{0}-poison", _queueName);
                _model.QueueDeclare(queue: deadLetterQueueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
                _model.ExchangeDeclare(_deadLetterExchangeName, Constants.DefaultDLXSetting);
                _model.QueueBind(deadLetterQueueName, _deadLetterExchangeName, Constants.DeadLetterRoutingKeyValue, null);

                args[Constants.DeadLetterExchangeKey] = _deadLetterExchangeName;
                args[Constants.DeadLetterRoutingKey]  = Constants.DeadLetterRoutingKeyValue;
            }

            _model.QueueDeclare(queue: _queueName, durable: false, exclusive: false, autoDelete: false, arguments: args);
            _batch = _model.CreateBasicPublishBatch();
        }
Example #2
0
 public RabbitMQListener(ITriggeredFunctionExecutor executor, IRabbitMQService service, string queueName, ushort batchNumber, ILogger logger)
 {
     _executor      = executor;
     _service       = service;
     _queueName     = queueName;
     _batchNumber   = batchNumber;
     _logger        = logger;
     _rabbitMQModel = _service.RabbitMQModel;
 }
Example #3
0
        public RabbitMQService(string connectionString, string hostName, string queueName, string userName, string password, int port)
            : this(connectionString, hostName, userName, password, port)
        {
            _rabbitMQModel = new RabbitMQModel(_model);
            _queueName     = queueName ?? throw new ArgumentNullException(nameof(queueName));

            _model.QueueDeclarePassive(_queueName); // Throws exception if queue doesn't exist
            _batch = _model.CreateBasicPublishBatch();
        }
 public RabbitMQListener(
     ITriggeredFunctionExecutor executor,
     IRabbitMQService service,
     string queueName,
     ILogger logger,
     FunctionDescriptor functionDescriptor,
     ushort prefetchCount)
 {
     _executor               = executor;
     _service                = service;
     _queueName              = queueName;
     _logger                 = logger;
     _rabbitMQModel          = _service.RabbitMQModel;
     _functionDescriptor     = functionDescriptor ?? throw new ArgumentNullException(nameof(functionDescriptor));
     _functionId             = functionDescriptor.Id;
     _scaleMonitorDescriptor = new ScaleMonitorDescriptor($"{_functionId}-RabbitMQTrigger-{_queueName}".ToLower());
     _prefetchCount          = prefetchCount;
 }
        public RabbitMQService(string connectionString, string hostName, string exchangeName, string routingKey, string userName, string password, int port)
            : this(connectionString, hostName, userName, password, port)
        {
            _rabbitMQModel = new RabbitMQModel(_model);
            _routingKey = routingKey ?? throw new ArgumentNullException(nameof(routingKey));
            _exchangeName = exchangeName ?? throw new ArgumentNullException(nameof(exchangeName));

            if (!string.IsNullOrEmpty(_exchangeName))
            {
                _model.ExchangeDeclarePassive(_exchangeName);
            }
            else
            {
                // Should only declare queue if using default exchange
                if (!string.IsNullOrEmpty(_routingKey))
                {
                    _model.QueueDeclarePassive(_routingKey);
                }
            }

            _batch = _model.CreateBasicPublishBatch();
        }