public void Start() { if (haveStarted) return; shouldContinue = true; _sqlQueueManager = new SqlQueueManager(queueEndpoint, connectionString); _queueId = _sqlQueueManager.CreateQueue(queueName); queue = _sqlQueueManager.GetQueue(queueName); timeout = new TimeoutAction(queue); logger.DebugFormat("Starting {0} threads to handle messages on {1}, number of retries: {2}", threadCount, queueEndpoint, numberOfRetries); for (var i = 0; i < threadCount; i++) { threads[i] = new Thread(ReceiveMessage) { Name = "Rhino Service Bus Worker Thread #" + i, IsBackground = true }; threads[i].Start(i); } haveStarted = true; var started = Started; if (started != null) started(); }
public void Start() { if (haveStarted) return; internalStart(); queue = _sqlQueueManager.GetQueue(queueName); Task.Factory.StartNew(() => { cleanUp = new CleanAction(queue); timeout = new TimeoutAction(queue); logger.DebugFormat("Starting {0} threads to handle messages on {1}, number of retries: {2}", threadCount, queueEndpoint, numberOfRetries); for (var i = 0; i < threadCount; i++) { threads[i] = new Thread(ReceiveMessage) { Name = "Rhino Service Bus Worker Thread #" + i, IsBackground = true }; threads[i].Start(i); } }).ContinueWith(_ => internalPostStart(), TaskContinuationOptions.OnlyOnRanToCompletion); }