public void Publish(HealthCheckAgentStart message) { IMonitorWang proxy = null; try { if (myFactory == null) { myFactory = new ChannelFactory <IMonitorWang>( new BasicHttpBinding(), myConfig.Uri ); } proxy = myFactory.CreateChannel(); proxy.CaptureAgentStart(message); ((IClientChannel)proxy).Close(); } catch { if ((proxy != null) && (((IClientChannel)proxy).State == CommunicationState.Faulted)) { ((IClientChannel)proxy).Abort(); } throw; } }
public void Publish(HealthCheckAgentStart message) { var isSticky = false; var textBuilder = new StringBuilder(string.Format("Agent on {0} started\n", message.Agent.AgentId)); if ((message.Activities != null) && (message.Activities.Count > 0)) { textBuilder.AppendFormat("{0} Activities loaded...\n", message.Activities.Count); message.Activities.ForEach(c => textBuilder.AppendFormat("{0}\n", c.Name)); } if ((message.UnhealthyActivities != null) && (message.UnhealthyActivities.Count > 0)) { textBuilder.Append("*** ATTENTION ***\n"); textBuilder.AppendFormat("{0} Unheathly Activities...\n", message.UnhealthyActivities.Count); message.UnhealthyActivities.ForEach(c => textBuilder.AppendFormat("{0}\n", c.Name)); isSticky = true; } if ((message.Checks != null) && (message.Checks.Count > 0)) { textBuilder.AppendFormat("{0} Checks loaded...\n", message.Checks.Count); message.Checks.ForEach(c => textBuilder.AppendFormat("{0}\n", c.Name)); } if ((message.UnhealthyChecks != null) && (message.UnhealthyChecks.Count > 0)) { textBuilder.Append("*** ATTENTION ***\n"); textBuilder.AppendFormat("{0} Unheathly Checks...\n", message.UnhealthyChecks.Count); message.UnhealthyChecks.ForEach(c => textBuilder.AppendFormat("{0}\n", c.Name)); isSticky = true; } // remove CR from text as Growl doesn't like these... textBuilder.Replace("\r", string.Empty); var notification = new Notification(myGrowler.Config.AppId, myGrowler.Config.NotificationId, null, string.Format("{0} HealthCheck Agent", message.Agent.SiteId), textBuilder.ToString()) { Sticky = isSticky, Priority = isSticky ? Priority.Emergency : Priority.Normal }; myGrowler.Connection.Notify(notification); }
public void Publish(HealthCheckAgentStart message) { myBus.Send <HealthCheckAgentStartNotification>(myConfig.OutputQueue, m => { m.Agent = message.Agent; m.Id = message.Id; m.Checks = message.Checks; m.Activities = message.Activities; m.DiscoveryCompleted = message.DiscoveryCompleted; m.DiscoveryStarted = message.DiscoveryStarted; if (!string.IsNullOrEmpty(myConfig.HttpGatewayUri)) { m.SetHttpToHeader(myConfig.HttpGatewayUri); } }); }
public void Publish(HealthCheckAgentStart message) { var data = SerialisationHelper <HealthCheckAgentStart> .DataContractSerialize(message); using (var cmd = SQLiteAdhocCommand.UsingSmartConnection(myConfig.ConnectionString) .WithSql(SQLiteStatement.Create("INSERT INTO AgentData (") .Append("TypeId,EventType,SiteId,AgentId,GeneratedOnUtc,ReceivedOnUtc,Data,Version") .Append(") VALUES (") .InsertParameter("@pTypeId", message.Id).Append(",") .InsertParameter("@pEventType", "SessionStart").Append(",") .InsertParameter("@pSiteId", message.Agent.SiteId).Append(",") .InsertParameter("@pAgentId", message.Agent.AgentId).Append(",") .InsertParameter("@pGeneratedOnUtc", message.DiscoveryStarted).Append(",") .InsertParameter("@pReceivedOnUtc", DateTime.UtcNow).Append(",") .InsertParameter("@pData", data).Append(",") .InsertParameter("@pVersion", message.Id) .Append(")"))) { cmd.ExecuteNonQuery(); } }
IMessenger IMessenger.Publish(HealthCheckAgentStart message) { myMessageBus.Send(message); return(this); }
public static IMessenger Publish(HealthCheckAgentStart message) { return(myInstance.Publish(message)); }
public void Consume(HealthCheckAgentStart message) { Publish(message); }
public IMessenger Publish(HealthCheckAgentStart message) { Sent.Add(message); return(this); }
public void CaptureAgentStart(HealthCheckAgentStart session) { Messenger.Publish(session); }
public override void Start() { // start the load process.... var sessionInfo = new HealthCheckAgentStart { DiscoveryStarted = DateTime.UtcNow, Agent = myAgentInfo }; // load publishers IHealthCheckSessionPublisher[] sessionPublishers; mySessionPublisherLoader.Load(out sessionPublishers, p => { if (!p.Status.IsHealthy()) { Logger.Debug("*** Session Publisher '{0}' reporting 'unhealthy', disabling it ***", p.FriendlyId); return; } Messenger.Subscribe(p); Logger.Debug("Loaded Session Publisher '{0}'", p.GetType().Name); }); IHealthCheckResultPublisher[] resultPublishers; myResultPublisherLoader.Load(out resultPublishers, p => { if (!p.Status.IsHealthy()) { Logger.Debug("*** Result Publisher '{0}' reporting 'unhealthy', disabling it ***", p.FriendlyId); return; } Messenger.Subscribe(p); Logger.Debug("Loaded Result Publisher '{0}'", p.GetType().Name); }); // load activities... IActivityPlugin[] activities; if (myActivitiesLoader.Load(out activities)) { activities.ToList().ForEach(a => { if (!a.Status.IsHealthy()) { Logger.Debug("*** Activity '{0}' reporting 'unhealthy', skipping it ***", a.Identity.Name); return; } myPlugins.Add(a); Logger.Debug("Loaded Activity '{0}'", a.GetType().Name); }); } // load health checks... IHealthCheckSchedulerPlugin[] healthChecks; myChecksLoader.Load(out healthChecks); healthChecks.ToList().ForEach(h => { if (!h.Status.IsHealthy()) { Logger.Debug("*** HealthCheck '{0}' reporting 'unhealthy', skipping it ***", h.Identity.Name); return; } myPlugins.Add(h); Logger.Debug("Loaded HealthCheck '{0}'", h.Identity.Name); }); // extract check info, attach and publish it to a session message sessionInfo.DiscoveryCompleted = DateTime.UtcNow; sessionInfo.Checks = (from healthCheck in healthChecks where healthCheck.Status.IsHealthy() select healthCheck.Identity).ToList(); sessionInfo.UnhealthyChecks = (from healthCheck in healthChecks where !healthCheck.Status.IsHealthy() select healthCheck.Identity).ToList(); sessionInfo.Activities = (from activity in activities where activity.Status.IsHealthy() select activity.Identity).ToList(); sessionInfo.UnhealthyActivities = (from activity in activities where !activity.Status.IsHealthy() select activity.Identity).ToList(); Messenger.Publish(sessionInfo); // listen for result messages being published // by the checks & activities - route to the // publisher-hub so it can decide how to handle them Messenger.Subscribe(this); // finally start the checks & activities base.Start(); }