Exemplo n.º 1
0
 public MonitoringController(Logger logger, RabbitMonitorRepository repository)
 {
     _logger = logger;
     _repository = repository;
 }
Exemplo n.º 2
0
        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();
        }