コード例 #1
0
        public Task Handle(EndpointHeartbeat message, IMessageHandlerContext context)
        {
            var endpointInstanceId = new EndpointInstanceId(message.EndpointName, message.Host, message.HostId);

            monitor.RecordHeartbeat(endpointInstanceId, message.ExecutedAt);

            return(Task.FromResult(0));
        }
コード例 #2
0
 static EndpointDetails Convert(EndpointInstanceId endpointInstanceId)
 {
     return(new EndpointDetails
     {
         Host = endpointInstanceId.HostName,
         HostId = endpointInstanceId.HostGuid,
         Name = endpointInstanceId.LogicalName
     });
 }
        public Task Handle(TaggedLongValueOccurrence message, IMessageHandlerContext context)
        {
            var instanceId  = EndpointInstanceId.From(context.MessageHeaders);
            var messageType = context.MessageHeaders[MetricHeaders.MetricType];

            if (messageType == RetriesMessageType)
            {
                store.Store(message.Entries, instanceId, new EndpointMessageType(instanceId.EndpointName, message.TagValue));
            }

            return(TaskEx.Completed);
        }
コード例 #4
0
        public void CheckEndpoints(DateTime threshold)
        {
            foreach (var entry in heartbeats)
            {
                var recordedHeartbeat = entry.Value.MarkDeadIfOlderThan(threshold);

                EndpointInstanceId endpointInstanceId = entry.Key;
                var monitor = endpoints.GetOrAdd(endpointInstanceId.UniqueId, id => new EndpointInstanceMonitor(endpointInstanceId, true, domainEvents));
                monitor.UpdateStatus(recordedHeartbeat.Status, recordedHeartbeat.Timestamp);
            }

            var stats = GetStats();

            Update(stats);
        }
コード例 #5
0
 public void WarmupMonitoringFromPersistence()
 {
     using (var session = store.OpenSession())
     {
         using (var endpointsEnumerator = session.Advanced.Stream(session.Query <KnownEndpoint, KnownEndpointIndex>()))
         {
             while (endpointsEnumerator.MoveNext())
             {
                 var endpoint           = endpointsEnumerator.Current.Document;
                 var endpointInstanceId = new EndpointInstanceId(endpoint.EndpointDetails.Name, endpoint.EndpointDetails.Host, endpoint.EndpointDetails.HostId);
                 monitoring.GetOrCreateMonitor(endpointInstanceId, endpoint.Monitored);
             }
         }
     }
 }
コード例 #6
0
        public void DetectEndpointFromPersistentStore(EndpointDetails endpointDetails, bool monitored)
        {
            var endpointInstanceId = new EndpointInstanceId(endpointDetails.Name, endpointDetails.Host, endpointDetails.HostId);

            endpoints.GetOrAdd(endpointInstanceId.UniqueId, id => new EndpointInstanceMonitor(endpointInstanceId, monitored, domainEvents));
        }
コード例 #7
0
 public void RecordHeartbeat(EndpointInstanceId endpointInstanceId, DateTime timestamp) => heartbeats.GetOrAdd(endpointInstanceId, id => new HeartbeatMonitor()).MarkAlive(timestamp);
コード例 #8
0
 public EndpointInstanceMonitor(EndpointInstanceId endpointInstanceId, bool monitored, IDomainEvents domainEvents)
 {
     Id                = endpointInstanceId;
     Monitored         = monitored;
     this.domainEvents = domainEvents;
 }
コード例 #9
0
 public EndpointInstanceMonitor(EndpointInstanceId endpointInstanceId, bool monitored)
 {
     Id        = endpointInstanceId;
     Monitored = monitored;
 }
コード例 #10
0
        public void Handle(EndpointHeartbeat message)
        {
            var endpointInstanceId = new EndpointInstanceId(message.EndpointName, message.Host, message.HostId);

            monitor.RecordHeartbeat(endpointInstanceId, message.ExecutedAt);
        }
コード例 #11
0
 public EndpointInstanceMonitor GetOrCreateMonitor(EndpointInstanceId endpointInstanceId, bool monitorIfNew)
 {
     return(endpoints.GetOrAdd(endpointInstanceId.ToUniqueInstanceId(), id => new EndpointInstanceMonitor(endpointInstanceId, monitorIfNew)));
 }