public Task <string> BasicConsume(ConsumeMode mode, IQueueConsumer consumer, string queue, string consumerTag, bool withoutAcks, bool exclusive, IDictionary <string, object> arguments, bool waitConfirmation) { EnsureOpen(); if (consumer == null) { throw new ArgumentNullException("consumer"); } if (!waitConfirmation && string.IsNullOrEmpty(consumerTag)) { throw new ArgumentException("You must specify a consumer tag if waitConfirmation = false"); } if (!string.IsNullOrEmpty(consumerTag)) { RegisterConsumer(mode, consumer, consumerTag); } return(_io.__BasicConsume(mode, queue, consumerTag, withoutAcks, exclusive, arguments, waitConfirmation, consumerTag2 => { RegisterConsumer(mode, consumer, consumerTag2); })); }
public Task <string> BasicConsume(ConsumeMode mode, IQueueConsumer consumer, string queue, string consumerTag, bool withoutAcks, bool exclusive, IDictionary <string, object> arguments, bool waitConfirmation) { EnsureOpen(); if (consumer == null) { throw new ArgumentNullException("consumer"); } if (!waitConfirmation && string.IsNullOrEmpty(consumerTag)) { throw new ArgumentException("You must specify a consumer tag if waitConfirmation = false"); } // TODO: refactor if (!string.IsNullOrEmpty(consumerTag)) { var added = _consumerSubscriptions.TryAdd(consumerTag, new BasicConsumerSubscriptionInfo { ConsumerTag = consumerTag, Mode = mode, _consumer = consumer }); if (!added) { throw new Exception("Consumer already exists for tag " + consumerTag); } } return(_io.__BasicConsume(mode, queue, consumerTag, withoutAcks, exclusive, arguments, waitConfirmation, consumerTag2 => { var added = _consumerSubscriptions.TryAdd(consumerTag2, new BasicConsumerSubscriptionInfo { ConsumerTag = consumerTag, Mode = mode, _consumer = consumer }); if (!added) { throw new Exception("Consumer already exists for tag " + consumerTag); } })); }