Пример #1
0
        /// <summary>
        /// Initializes the Queue, and Dequeuer
        /// </summary>
        /// <typeparam name="T">Model</typeparam>
        /// <param name="setup">Setup</param>
        /// <returns>Tasks</returns>
        public virtual IEnumerable <IRunnable> Tasks <T>(IQueueSetup <T> setup)
        {
            if (null == setup)
            {
                throw new ArgumentNullException("setup");
            }

            yield return(this.Initialize(setup.Name));

            yield return(this.Dequeue <T>(setup));
        }
Пример #2
0
        /// <summary>
        /// Dequeue Task (Service Bus Queue Auto Scaler)
        /// </summary>
        /// <typeparam name="T">Data Type</typeparam>
        /// <param name="setup">Setup</param>
        /// <returns>Service Bus Queue Auto Scaler</returns>
        public override IRunnable Dequeue <T>(IQueueSetup <T> setup)
        {
            if (null == setup)
            {
                throw new ArgumentNullException("setup");
            }

            var messagesPerScaleUnit = this.throughput.MessagesPerScaleUnit(setup.Priority);
            var scale = this.throughput.Scale(setup.Priority);
            var checkScaleInMinutes = this.throughput.CheckScaleEvery(setup.Priority);
            var connection          = new QueueConnection <T>()
            {
                ConnectionString = this.connectionString,
                Setup            = setup,
            };

            return(new BusQueueAutoScaler <T>(new BusQueue(setup.Name, base.connectionString)
                                              , connection
                                              , messagesPerScaleUnit
                                              , scale.Minimum
                                              , scale.Maximum
                                              , checkScaleInMinutes));
        }