public Task StartAsync(CancellationToken cancellationToken) { ThrowIfDisposed(); if (_started) { throw new InvalidOperationException("The listener has already been started."); } _channel = _service.GetChannel(); _channel.BasicQos(0, _batchNumber, false); _consumer = new EventingBasicConsumer(_channel); _consumer.Received += (model, ea) => { if (_batchNumber == 1) { _executor.TryExecuteAsync(new TriggeredFunctionData() { TriggerValue = ea }, cancellationToken); } else if (batchedMessages.Count >= _batchNumber) { batchedMessages.Add(ea); _executor.TryExecuteAsync(new TriggeredFunctionData() { TriggerValue = batchedMessages }, cancellationToken); } else { batchedMessages.Add(ea); } }; _consumerTag = _channel.BasicConsume(queue: _queueName, autoAck: true, consumer: _consumer); _started = true; return(Task.CompletedTask); }