public new void Setup() { endpointRegistry = new EndpointRegistry(); criticalTimeStore = new CriticalTimeStore(); processingTimeStore = new ProcessingTimeStore(); retriesStore = new RetriesStore(); queueLengthProvider = new FakeQueueLengthProvider(); queueLengthStore = new QueueLengthStore(); queueLengthProvider.Initialize(string.Empty, (entryDtos, dto) => queueLengthStore.Store(entryDtos.Select(e => ToEntry(e)).ToArray(), ToEndpointInputQueue(dto))); var settings = new Settings { EndpointUptimeGracePeriod = TimeSpan.FromMinutes(5) }; activityTracker = new EndpointInstanceActivityTracker(settings); messageTypeRegistry = new MessageTypeRegistry(); var breakdownProviders = new IProvideBreakdown[] { criticalTimeStore, processingTimeStore, retriesStore, queueLengthStore }; var controller = new DiagramApiController(breakdownProviders, endpointRegistry, activityTracker, messageTypeRegistry) { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/monitored-endpoint") }; GetMonitoredEndpoints = () => controller.GetAllEndpointsMetrics(); GetMonitoredSingleEndpoint = endpointName => controller.GetSingleEndpointMetrics(endpointName); }
async Task UpdateQueueLengthStore(ILookup <string, QueueDescription> queueData, CancellationToken token) { var timestamp = DateTime.UtcNow.Ticks; foreach (var mapping in endpointQueueMappings) { var queue = queueData[mapping.Value].FirstOrDefault(); if (queue != null) { var entries = new[] { new RawMessage.Entry { DateTicks = timestamp, Value = (await managementClient.GetQueueRuntimeInfoAsync(queue.Path, token).ConfigureAwait(false)).MessageCountDetails.ActiveMessageCount } }; queueLengthStore.Store(entries, new EndpointInputQueue(mapping.Key.EndpointName, queue.Path)); } else { Logger.DebugFormat("Endpoint {0} ({1}): no queue length data found for queue {2}", mapping.Key.EndpointName, mapping.Key.InstanceName ?? mapping.Key.InstanceId, mapping.Value); } } }
void UpdateStore(ILookup <string, long?> queueLengths) { var now = DateTime.UtcNow.Ticks; foreach (var kvp in endpointsHash) { var instance = kvp.Key; var queueLength = queueLengths[instance.InputQueue].FirstOrDefault(); if (queueLength.HasValue) { queueLengthStore.Store(new[] { new RawMessage.Entry { DateTicks = now, Value = queueLength.Value } }, instance); } else { Log.Warn($"Queue Length data missing for queue {instance.InputQueue} (Endpoint {instance.EndpointName})"); } } }
private void UpdateQueueLengthStore(ILookup <string, QueueDescription> queueData) { var timestamp = DateTime.UtcNow.Ticks; foreach (var mapping in endpointQueueMappings) { var queue = queueData[mapping.Value].FirstOrDefault(); if (queue != null) { var entries = new[] { new RawMessage.Entry { DateTicks = timestamp, Value = queue.MessageCountDetails.ActiveMessageCount } }; queueLengthStore.Store(entries, new EndpointInputQueue(mapping.Key.EndpointName, queue.Path)); } else { Logger.DebugFormat("Endpoint {0} ({1}): no queue length data found for queue {2}", mapping.Key.EndpointName, mapping.Key.InstanceName ?? mapping.Key.InstanceId, mapping.Value); } } }