public ServiceDiscoveryOperationResult InitializeConfiguration(string configFilePath) { ServiceDiscoveryOperationResult serviceDiscoveryOperationResult = new ServiceDiscoveryOperationResult() { OperationMethod = "ServiceDiscovery-Initialize-Config", IsSuccess = true }; try { FileStream fileStream = new FileStream(configFilePath, FileMode.Open); try { ServiceDiscoveryConfiguration serviceDiscoveryConfiguration = (new XmlSerializer(typeof(ServiceDiscoveryConfiguration))).Deserialize(fileStream) as ServiceDiscoveryConfiguration; if (serviceDiscoveryConfiguration != null) { this.serviceDiscoveryList = serviceDiscoveryConfiguration.ConfigItems; if ((string.IsNullOrEmpty(serviceDiscoveryConfiguration.AgentIP) ? false : !string.IsNullOrEmpty(serviceDiscoveryConfiguration.AgentPort))) { this.ConfigureConsulAgentUrl(serviceDiscoveryConfiguration.AgentIP, serviceDiscoveryConfiguration.AgentPort); } } } finally { if (fileStream != null) { ((IDisposable)fileStream).Dispose(); } } } catch (Exception exception1) { Exception exception = exception1; serviceDiscoveryOperationResult.IsSuccess = false; serviceDiscoveryOperationResult.ErrorMessage = exception.ToString(); } return(serviceDiscoveryOperationResult); }
public ServiceDiscoveryOperationResult TriggerAutoDeregistry() { ServiceDiscoveryOperationResult serviceDiscoveryOperationResult = new ServiceDiscoveryOperationResult() { OperationMethod = "ServiceDiscovery-Auto-Deregistry", IsSuccess = true }; if (!ConsulConfigurator.Instance.ConsulAgentAvailable) { serviceDiscoveryOperationResult.Message = string.Concat("Consul Agent is unavailable. ", ConsulConfigurator.Instance.ConsulAgentUrl); } else { try { StringBuilder stringBuilder = new StringBuilder(); foreach (KeyValuePair <string, string> keyValuePair in this.autoRegisteredServiceCache) { serviceDiscoveryOperationResult.IsSuccess = ConsulHost.Instance.DeregisterService(keyValuePair.Key); if (serviceDiscoveryOperationResult.IsSuccess) { stringBuilder.AppendLine(string.Format("Service {0} has successfully deregistered. Detail Service Info: {1}", keyValuePair.Key, keyValuePair.Value)); } } serviceDiscoveryOperationResult.Message = stringBuilder.ToString(); } catch (Exception exception1) { Exception exception = exception1; serviceDiscoveryOperationResult.IsSuccess = false; serviceDiscoveryOperationResult.ErrorMessage = exception.ToString(); } } return(serviceDiscoveryOperationResult); }
public ServiceDiscoveryOperationResult TriggerAutoRegistry() { char[] chrArray; ServiceDiscoveryOperationResult serviceDiscoveryOperationResult = new ServiceDiscoveryOperationResult() { OperationMethod = "ServiceDiscovery-Auto-Registry", IsSuccess = true }; if (!ConsulConfigurator.Instance.ConsulAgentAvailable) { serviceDiscoveryOperationResult.Message = string.Concat("Consul Agent is unavailable. ", ConsulConfigurator.Instance.ConsulAgentUrl); } else { try { if ((ConsulConfigurator.Instance.ServiceDiscoveryItems == null ? true : ConsulConfigurator.Instance.ServiceDiscoveryItems.Count <= 0)) { serviceDiscoveryOperationResult.Message = string.Concat("No services configured.", ConsulConfigurator.Instance.ConsulAgentUrl); } else { StringBuilder stringBuilder = new StringBuilder(); foreach (ServiceDiscovery serviceDiscoveryItem in ConsulConfigurator.Instance.ServiceDiscoveryItems) { if (serviceDiscoveryItem.AutoRegisry) { string empty = string.Empty; if (!(serviceDiscoveryItem.HealthCheckURL.StartsWith("http", StringComparison.OrdinalIgnoreCase) ? false : !serviceDiscoveryItem.HealthCheckURL.StartsWith("https", StringComparison.OrdinalIgnoreCase))) { empty = serviceDiscoveryItem.HealthCheckURL; } else if (!string.IsNullOrEmpty(serviceDiscoveryItem.ServiceAddress)) { string str = string.Format("http://{0}:{1}/", serviceDiscoveryItem.ServiceAddress, serviceDiscoveryItem.ServicePort); string healthCheckURL = serviceDiscoveryItem.HealthCheckURL; chrArray = new char[] { '/' }; empty = Path.Combine(str, healthCheckURL.TrimStart(chrArray)); } else { string str1 = string.Format("http://{0}:{1}/", "localhost", serviceDiscoveryItem.ServicePort); string healthCheckURL1 = serviceDiscoveryItem.HealthCheckURL; chrArray = new char[] { '/' }; empty = Path.Combine(str1, healthCheckURL1.TrimStart(chrArray)); } string str2 = this.FormatTags(serviceDiscoveryItem.ServiceTags); serviceDiscoveryOperationResult.IsSuccess = ConsulHost.Instance.RegisterService(serviceDiscoveryItem.ServiceName, str2, serviceDiscoveryItem.ServiceAddress, serviceDiscoveryItem.ServicePort, empty, serviceDiscoveryItem.HealthInterval); if (serviceDiscoveryOperationResult.IsSuccess) { this.autoRegisteredServiceCache.TryAdd(serviceDiscoveryItem.ServiceName, string.Format("http://{0}:{1}/", serviceDiscoveryItem.ServiceAddress, serviceDiscoveryItem.ServicePort)); object[] serviceName = new object[] { serviceDiscoveryItem.ServiceName, serviceDiscoveryItem.ServiceAddress, serviceDiscoveryItem.ServicePort, empty, serviceDiscoveryItem.HealthInterval }; stringBuilder.AppendLine(string.Format("Service {0} has successfully registered with IP: {1}, Port: {2}, HealthCheckURL: {3}, HealthCheckInterval: {4}s", serviceName)); } } } serviceDiscoveryOperationResult.Message = stringBuilder.ToString(); } } catch (Exception exception1) { Exception exception = exception1; serviceDiscoveryOperationResult.IsSuccess = false; serviceDiscoveryOperationResult.ErrorMessage = exception.ToString(); } } return(serviceDiscoveryOperationResult); }