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); }
public TimeoutAction(ISqlQueue queue) { this.queue = queue; timeoutMessageIds.Write(writer => { var allMessages = queue.GetAllMessages(SubQueue.Timeout.ToString()); foreach (var message in allMessages) { var time = message.Headers["time-to-send"]; if (!string.IsNullOrEmpty(time)) { var timeToSend = XmlConvert.ToDateTime(time, XmlDateTimeSerializationMode.Unspecified); logger.DebugFormat("Registering message {0} to be sent at {1} on {2}", message.Id, timeToSend, queue.QueueName); writer.WriteMessageId(timeToSend, message); } } }); timeoutTimer = new Timer(OnTimeoutCallback, null, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1)); }
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); }
public CleanAction(ISqlQueue queue) { this.queue = queue; timeoutTimer = new Timer(OnTimeoutCallback, null, TimeSpan.FromHours(0), TimeSpan.FromHours(1)); }