Exemplo n.º 1
0
 public void CreateTopic(string topic, int initialQueueCount)
 {
     lock (this)
     {
         Ensure.NotNullOrEmpty(topic, "topic");
         Ensure.Positive(initialQueueCount, "initialQueueCount");
         if (initialQueueCount > BrokerController.Instance.Setting.TopicMaxQueueCount)
         {
             throw new ArgumentException(string.Format("Initial queue count cannot bigger than {0}.", BrokerController.Instance.Setting.TopicMaxQueueCount));
         }
         var queues = new List <Queue>();
         for (var index = 0; index < initialQueueCount; index++)
         {
             queues.Add(new Queue(topic, index));
         }
         foreach (var queue in queues)
         {
             if (!IsQueueExist(queue.Topic, queue.QueueId))
             {
                 _queueStore.CreateQueue(queue);
             }
             _queueDict.TryAdd(CreateQueueKey(queue.Topic, queue.QueueId), queue);
         }
     }
 }