public void StartConsuming() { if (ConsumingChannel is null) { throw new ConsumingChannelIsNullException($"Consuming channel is null. Configure {nameof(IConsumingService)} or full functional {nameof(IQueueService)} for consuming messages."); } if (_consumingStarted) { return; } _consumer.Received += async(sender, eventArgs) => await _messageHandlingService.HandleMessageReceivingEvent(eventArgs, this); _consumingStarted = true; var consumptionExchanges = _exchanges.Where(x => x.IsConsuming); foreach (var exchange in consumptionExchanges) { foreach (var queue in exchange.Options.Queues) { ConsumingChannel.BasicConsume(queue: queue.Name, autoAck: false, consumer: _consumer); } } }
private async Task ExecutePipeline(MessageHandlingContext context) { if (!_messageHandlingMiddlewares.Any()) { await _messageHandlingService.HandleMessageReceivingEvent(context); return; } Func <Task> handleFunction = async() => await _messageHandlingService.HandleMessageReceivingEvent(context); foreach (var middleware in _messageHandlingMiddlewares) { var previousHandleFunction = handleFunction; handleFunction = async() => await middleware.Handle(context, previousHandleFunction); } await handleFunction().ConfigureAwait(false); }
Task ConsumerOnReceived(object sender, BasicDeliverEventArgs eventArgs) => _messageHandlingService.HandleMessageReceivingEvent(eventArgs, this);