예제 #1
0
        public void PollingQueues()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("PollingQueues");

            Assert.AreEqual(3, configuration.PollingQueues.Count());

            ITaskProcessorPollingQueueConfiguration config = configuration.PollingQueues.First();

            Assert.AreEqual("A", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(1), config.PollInterval);
            Assert.IsTrue(config.IsMaster);
            Assert.IsFalse(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);
            Assert.AreEqual(0, config.MaxWorkers);

            config = configuration.PollingQueues.Skip(1).First();

            Assert.AreEqual("B", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(2), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);
            Assert.AreEqual(5, config.MaxWorkers);

            config = configuration.PollingQueues.Skip(2).First();

            Assert.AreEqual("C", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(3), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsTrue(config.IsConcurrent);
            Assert.AreEqual(10, config.MaxWorkers);
        }
        /// <inheritdoc />
        public void AddCopy(ITaskProcessorPollingQueueConfiguration source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            this.pollingQueues.Add(source.Key, new RedisPollingQueueConfiguration(source));
        }
예제 #3
0
        public void PollingQueuesConfiguration()
        {
            FakeTaskProcessorRuntimeInfo processorInfo1 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "A",
                PollInterval = TimeSpan.FromMinutes(1),
                IsMaster     = true
            });

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "B",
                PollInterval = TimeSpan.FromMinutes(2),
                IsActive     = true
            });

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "C",
                PollInterval = TimeSpan.FromMinutes(3),
                IsConcurrent = true
            });

            this.Repository.Add(processorInfo1);

            ITaskProcessorRuntimeInfo processorInfo2 = this.Repository.GetById(processorInfo1.TaskProcessorId);

            Assert.AreEqual(3, processorInfo2.Configuration.PollingQueues.Count());

            ITaskProcessorPollingQueueConfiguration queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "A");

            Assert.AreEqual(TimeSpan.FromMinutes(1), queue.PollInterval);
            Assert.IsTrue(queue.IsMaster);
            Assert.IsFalse(queue.IsActive);
            Assert.IsFalse(queue.IsConcurrent);

            queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "B");

            Assert.AreEqual(TimeSpan.FromMinutes(2), queue.PollInterval);
            Assert.IsFalse(queue.IsMaster);
            Assert.IsTrue(queue.IsActive);
            Assert.IsFalse(queue.IsConcurrent);

            queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "C");

            Assert.AreEqual(TimeSpan.FromMinutes(3), queue.PollInterval);
            Assert.IsFalse(queue.IsMaster);
            Assert.IsFalse(queue.IsActive);
            Assert.IsTrue(queue.IsConcurrent);
        }
예제 #4
0
        public void AddPollingQueue()
        {
            FakeTaskProcessorConfiguration config1 = new FakeTaskProcessorConfiguration();
            FakeTaskProcessorConfiguration config2 = new FakeTaskProcessorConfiguration();

            ITaskProcessorPollingQueueConfiguration pollingQueueConfig2 = config2.PollingQueues.Add("A");

            pollingQueueConfig2.MaxWorkers = 11;

            config1.MergeWith(config2);

            ITaskProcessorPollingQueueConfiguration pollingQueueConfig1 = config1.PollingQueues["A"];

            Assert.AreEqual(pollingQueueConfig2.MaxWorkers, pollingQueueConfig1.MaxWorkers);
        }
        private static void Deserialize(IReadOnlyDictionary <string, string> values, ITaskProcessorPollingQueuesConfiguration result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            foreach (KeyValuePair <string, string> pair in values.Where(v => v.Key.StartsWith(prefix, StringComparison.Ordinal) && v.Key.EndsWith(".Type", StringComparison.Ordinal)))
            {
                string key = pair.Value;

                ITaskProcessorPollingQueueConfiguration config = result.Add(key);

                config.MaxWorkers = RedisConverter.ParseInteger(values[prefix + key + ".MaxWorkers"]);

                RedisTaskProcessorConfigurationRepository.Deserialize(values, config, prefix + key);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RedisPollingQueueConfiguration"/> class by copying the properties of another instance.
 /// </summary>
 /// <param name="source">The instance whose properties to copy.</param>
 internal RedisPollingQueueConfiguration(ITaskProcessorPollingQueueConfiguration source)
     : base(source)
 {
     this.key        = source.Key;
     this.maxWorkers = source.MaxWorkers;
 }
 public void AddCopy(ITaskProcessorPollingQueueConfiguration source)
 {
     this.queues.Add(new FakePollingQueueConfiguration(source));
 }
 /// <inheritdoc />
 void ITaskProcessorPollingQueuesConfiguration.AddCopy(ITaskProcessorPollingQueueConfiguration source)
 {
     throw new NotSupportedException();
 }