public MonitoringController(Logger logger, RabbitMonitorRepository repository) { _logger = logger; _repository = repository; }
private void RefreshServerQueues(Server server, RabbitMonitorRepository repository, RabbitServiceBusAdapter adapter) { var queuesInStore = repository.GetQueues().Where(x => x.ServerId == server.ServerId); var queues = adapter.GetServerQueues(); OnReport(this, new DataEventArgs<string>(string.Format("Updating [{0}] Queues", queues.Count()))); queues.ToList().ForEach(x => { var storeQueue = queuesInStore.FirstOrDefault(q => q.Name == x.Name); if (storeQueue == null) { storeQueue = Queue.ForServer(server, x.Name, x.Name); repository.Create<Queue>(storeQueue); repository.Context.SaveChanges(); } if (storeQueue.IsEnable) { storeQueue.Messages = new Messages(x.MessagesReady, x.MessagesUnacknowledged); storeQueue.Rates = new MessageRates(x.BackingQueueStatus.AvgIngressRate, x.BackingQueueStatus.AvgEgressRate, x.BackingQueueStatus.AvgAckEgressRate); storeQueue.Status = String.IsNullOrWhiteSpace(x.IdleSince) ? QueueStatus.Active : QueueStatus.Idle; storeQueue.LastUpdatedOn = DateTime.Now; repository.Update<Queue>(storeQueue); } }); repository.Context.SaveChanges(); }