public System.Threading.Tasks.Task AddBusinessMessageAsync(RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage) { return(base.Channel.AddBusinessMessageAsync(rawMessage)); }
private void BroadcastAliveMessage(RmsClient client, int refID) { try { var asc = new AgentServiceClient(); string clientEndpiont = ConfigurationManager.AppSettings["RMS.NetTcpBinding_AgentService"]; clientEndpiont = clientEndpiont.Replace("client_ip_address", client.IpAddress); asc.Endpoint.Address = new EndpointAddress(clientEndpiont); NetTcpBinding myBinding = new NetTcpBinding(); myBinding.Security.Mode = SecurityMode.None; myBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None; myBinding.OpenTimeout = new TimeSpan(0, 5, 0); asc.Endpoint.Binding = myBinding; AddLogMonitoringClient(refID, client.ClientId, client.ClientCode, client.IpAddress, client.State, null); var result = asc.Monitoring(client.ClientCode); if (agentNotAliveHashtable.Contains(client.ClientCode)) { agentNotAliveHashtable.Remove(client.ClientCode); } } catch (Exception e) { try { if (e.Message.IndexOf("AddLogMonitoringClient") > -1) { throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + e.Message, e, false); } // ถ้า Cleint State เป็น 1 (Normal) แสดงว่า Agent ผิดปกติ if (client.State == 1) { using (var db = new MyDbContext()) { var rmsSystemConfig = db.RmsSystemConfigs.Find("AgentProcessName"); string agentProcessName; if (rmsSystemConfig == null) { agentProcessName = "RMS.Agent.WPF"; } else { agentProcessName = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue; } rmsSystemConfig = db.RmsSystemConfigs.Find("DelayAlert.AgentNotAlive"); string dalayInSecond; if (rmsSystemConfig == null) { dalayInSecond = "90"; } else { dalayInSecond = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue; } SqlParameter[] parameters = new SqlParameter[1]; SqlParameter p1 = new SqlParameter("ClientID", client.ClientId); parameters[0] = p1; var lists = db.Database.SqlQuery <MonitoringProfileDeviceInfo>("RMS_GetMonitoringProfileDeviceByClientID " + "@ClientID", parameters); var device = lists.First(f => f.DeviceCode == "CLIENT" && f.DeviceTypeCode == Models.DeviceCode.Client && (string.IsNullOrEmpty(f.StringValue) || f.StringValue == agentProcessName)); if (device != null) { bool CanSendMessage = Convert.ToInt32(dalayInSecond) == 0; if (agentNotAliveHashtable.Contains(client.ClientCode)) { DateTime a = (DateTime)agentNotAliveHashtable[client.ClientCode]; var diffInSeconds = (DateTime.Now - a).TotalSeconds; if (diffInSeconds > Convert.ToInt32(dalayInSecond)) { CanSendMessage = true; } } else { agentNotAliveHashtable.Add(client.ClientCode, DateTime.Now); } if (CanSendMessage) { var mp = new WebService.Proxy.MonitoringService().monitoringService; RmsReportMonitoringRaw rawMessage = new RmsReportMonitoringRaw { ClientCode = client.ClientCode, DeviceCode = "CLIENT", Message = "AGENT_NOT_ALIVE", MessageDateTime = DateTime.Now, MonitoringProfileDeviceId = device.MonitoringProfileDeviceId }; mp.AddMessage(rawMessage); if (agentNotAliveHashtable.Contains(client.ClientCode)) { agentNotAliveHashtable.Remove(client.ClientCode); } } } } } } catch (Exception ex) { throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + ex.Message, ex, false); } } }
public void AddBusinessMessage(RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage) { base.Channel.AddBusinessMessage(rawMessage); }