protected internal void StartQueues(Dictionary <Type, IMessageHandlerFactory> handlerMap) { // Create queues for each registered type this.handlerMap = handlerMap; queueMap = new Dictionary <string, Type>(); var mqSuffixes = new [] { ".inq", ".outq", ".priorityq", ".dlq" }; foreach (var type in this.handlerMap.Keys) { foreach (var mqSuffix in mqSuffixes) { var queueName = QueueNames.ResolveQueueNameFn(type.Name, mqSuffix); if (!queueMap.ContainsKey(queueName)) { queueMap.Add(queueName, type); } #if !NETSTANDARD2_0 var mqDesc = new QueueDescription(queueName); if (!namespaceManager.QueueExists(queueName)) { namespaceManager.CreateQueue(mqDesc); } #endif } var mqNames = new QueueNames(type); AddQueueHandler(mqNames.In); AddQueueHandler(mqNames.Priority); } }
protected internal void StartQueues(Dictionary <Type, IMessageHandlerFactory> handlerMap, Dictionary <Type, int> handlerThreadCountMap) { // Create queues for each registered type this.handlerMap = handlerMap; queueMap = new Dictionary <string, Type>(); var mqSuffixes = new[] { ".inq", ".outq", ".priorityq", ".dlq" }; foreach (var type in this.handlerMap.Keys) { foreach (var mqSuffix in mqSuffixes) { var queueName = QueueNames.ResolveQueueNameFn(type.Name, mqSuffix); queueName = queueName.SafeQueueName(); if (!queueMap.ContainsKey(queueName)) { queueMap.Add(queueName, type); } var mqDesc = new QueueDescription(queueName); #if !NETSTANDARD2_0 if (!namespaceManager.QueueExists(queueName)) { namespaceManager.CreateQueue(mqDesc); } #else // Prefer GetAwaiter().GetResult() so that the StackTrace // is easier to use, see: // https://stackoverflow.com/a/36427080 if (!managementClient.QueueExistsAsync(mqDesc.Path).GetAwaiter().GetResult()) { managementClient.CreateQueueAsync(mqDesc).GetAwaiter().GetResult(); } #endif } var mqNames = new QueueNames(type); AddQueueHandler(mqNames.In, handlerThreadCountMap[type]); AddQueueHandler(mqNames.Priority, handlerThreadCountMap[type]); } }