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));
 }
Beispiel #3
0
 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));
 }
 public CleanAction(ISqlQueue queue)
 {
     this.queue = queue;
     timeoutTimer = new Timer(OnTimeoutCallback, null, TimeSpan.FromHours(0), TimeSpan.FromHours(1));
 }