/// <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)); }
/// <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)); }