public IList <QueueWithTopEnqueuedJobsDto> Queues()
        {
            return(UseConnection <IList <QueueWithTopEnqueuedJobsDto> >(connection =>
            {
                var tuples = _queueProviders
                             .Select(x => x.GetJobQueueMonitoringApi(connection))
                             .SelectMany(x => x.GetQueues(), (monitoring, queue) => new { Monitoring = monitoring, Queue = queue })
                             .OrderBy(x => x.Queue)
                             .ToArray();

                var result = new List <QueueWithTopEnqueuedJobsDto>(tuples.Length);

                foreach (var tuple in tuples)
                {
                    var enqueuedJobIds = tuple.Monitoring.GetEnqueuedJobIds(tuple.Queue, 0, 5);
                    var counters = tuple.Monitoring.GetEnqueuedAndFetchedCount(tuple.Queue);

                    result.Add(new QueueWithTopEnqueuedJobsDto
                    {
                        Name = tuple.Queue,
                        Length = counters.EnqueuedCount ?? 0,
                        Fetched = counters.FetchedCount,
                        FirstJobs = EnqueuedJobs(connection, enqueuedJobIds)
                    });
                }

                return result;
            }));
        }