public override IFetchedJob FetchNextJob(string[] queues, CancellationToken cancellationToken)
        {
            if (queues == null || queues.Length == 0)
            {
                throw new ArgumentNullException(nameof(queues));
            }

            var providers = queues
                            .Select(queue => _queueProviders.GetProvider(queue))
                            .Distinct()
                            .ToArray();

            if (providers.Length != 1)
            {
                throw new InvalidOperationException(
                          $"Multiple provider instances registered for queues: {String.Join(", ", queues)}. You should choose only one type of persistent queues per server instance.");
            }

            var persistentQueue = providers[0].GetJobQueue(_connection);

            return(persistentQueue.Dequeue(queues, cancellationToken));
        }