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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }