protected override IDistributor<int> CreateDistributor(
            Func<Lease<int>, Task> onReceive = null,
            Leasable<int>[] leasables = null,
            int maxDegreesOfParallelism = 1,
            string name = null,
            TimeSpan? waitInterval = null,
            string pool = null)
        {
            leasables = leasables ?? DefaultLeasable;

            pool = pool ?? DateTimeOffset.UtcNow.Ticks.ToString();
            distributor = new SqlBrokeredDistributor<int>(
                leasables,
                Database,
                pool,
                maxDegreesOfParallelism,
                waitInterval,
                DefaultLeaseDuration);

            if (onReceive != null)
            {
                distributor.OnReceive(onReceive);
            }

            Database.RegisterLeasableResources(leasables, pool).Wait();

            return distributor;
        }
        protected override IDistributor <int> CreateDistributor(
            Func <Lease <int>, Task> onReceive = null,
            Leasable <int>[] leasables         = null,
            int maxDegreesOfParallelism        = 1,
            string name           = null,
            TimeSpan?waitInterval = null,
            string pool           = null)
        {
            leasables = leasables ?? DefaultLeasable;

            pool        = pool ?? DateTimeOffset.UtcNow.Ticks.ToString();
            distributor = new SqlBrokeredDistributor <int>(
                leasables,
                Database,
                pool,
                maxDegreesOfParallelism,
                waitInterval,
                DefaultLeaseDuration);

            if (onReceive != null)
            {
                distributor.OnReceive(onReceive);
            }

            Database.RegisterLeasableResources(leasables, pool).Wait();

            return(distributor);
        }