Exemple #1
0
        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);
                }
            }
        }
Exemple #3
0
        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);
                }
            }
        }