public QueueManager(IPEndPoint endpoint, string path) { NumberOfMessagesToKeepInProcessedQueues = 100; NumberOfMessagesToKeepOutgoingQueues = 100; NumberOfReceivedMessagesToKeep = 100000; OldestMessageInProcessedQueues = TimeSpan.FromDays(3); OldestMessageInOutgoingQueues = TimeSpan.FromDays(3); this.endpoint = endpoint; this.path = path; queueStorage = new QueueStorage(path); queueStorage.Initialize(); queueStorage.Global(actions => { receivedMsgs.Add(actions.GetAlreadyReceivedMessageIds()); actions.Commit(); }); receiver = new Receiver(endpoint, AcceptMessages); receiver.Start(); HandleRecovery(); queuedMessagesSender = new QueuedMessagesSender(queueStorage, this); sendingThread = new Thread(queuedMessagesSender.Send) { IsBackground = true, Name = "Rhino Queue Sender Thread for " + path }; sendingThread.Start(); purgeOldDataTimer = new Timer(PurgeOldData, null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3)); }
public void Start() { AssertNotDisposedOrDisposing(); if(wasStarted) throw new InvalidOperationException("The Start method may not be invoked more than once."); receiver = new Receiver(endpoint, enableEndpointPortAutoSelection, AcceptMessages); receiver.Start(); queuedMessagesSender = new QueuedMessagesSender(queueStorage, this); sendingThread = new Thread(queuedMessagesSender.Send) { IsBackground = true, Name = "Rhino Queue Sender Thread for " + path }; sendingThread.Start(); purgeOldDataTimer = new Timer(PurgeOldData, null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3)); wasStarted = true; }