示例#1
0
        public RabbitConsumer(IRabbitFactoryConnection connection,
                              string serviceName, string topicName,
                              Func <GateContext, CancellationToken, Task> messageHandler,
                              Action abortedHandler,
                              bool autoDelete,
                              int maxConcurrentMessages,
                              RabbitOptions options, ILogger logger)
        {
            ServiceName = string.IsNullOrEmpty(serviceName) ?
                          throw new ArgumentException("ServiceName null or empty", nameof(serviceName)) : serviceName;
            TopicName = string.IsNullOrEmpty(topicName) ?
                        throw new ArgumentException("TopicName null or empty", nameof(topicName)) : topicName;
            AutoDelete            = autoDelete;
            MaxConcurrentMessages = maxConcurrentMessages;
            _messageHandler       = messageHandler ?? throw new ArgumentNullException(nameof(messageHandler));

            if (abortedHandler == null)
            {
                throw new ArgumentNullException(nameof(abortedHandler));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));

            var queueName  = RabbitMapper.GetQueueName(ServiceName, TopicName);
            var routingKey = RabbitMapper.GetRoutingKey(TopicName);

            _consumer = new RabbitInternalConsumer(connection, options.Exchange, queueName, routingKey, AutoDelete, (ushort)MaxConcurrentMessages, HandleMessage,
                                                   abortedHandler);
        }
示例#2
0
 public RabbitInternalConsumer(IRabbitFactoryConnection connection,
                               string exchange, string queueName, string routingKey,
                               bool autoDelete, ushort maxConcurrentMessages,
                               Func <BasicDeliverEventArgs, Task> messageHandler,
                               Action abortedHandler)
 {
     _connection            = connection ?? throw new ArgumentNullException(nameof(connection));
     _exchange              = exchange;
     _queueName             = queueName;
     _routingKey            = routingKey;
     _autoDelete            = autoDelete;
     _maxConcurrentMessages = maxConcurrentMessages;
     _messageHandler        = messageHandler;
     _abortedHandler        = abortedHandler;
 }
示例#3
0
 public RabbitFactory(IRabbitFactoryConnection connection, IOptions <RabbitOptions> options, ILogger <RabbitFactory> logger)
 {
     _connection = connection ?? throw new ArgumentNullException(nameof(connection));
     _options    = options.Value;
     _logger     = logger;
 }