Ejemplo n.º 1
0
        public void SetAppUp(IEurekaInstanceConfig instanceConfig, EurekaClientConfig config, ILoggerFactory factory)
        {
            this._logger.LogDebug("Start registering service instance...");
            ApplicationInfoManager aim = this.InitializeApplicationInfoManager(instanceConfig);

            this.SetAppStatus(InstanceStatus.UP, aim);
            this._logger.LogDebug($"Service instance was registered (ip: {instanceConfig.IpAddress}, port: {instanceConfig.NonSecurePort}, sec-port: {instanceConfig.SecurePort})");

            this._eurekaClient = this.InitializeEurekaClient(instanceConfig, config, factory);

            for (int i = 0; i < 120; i++)
            {
                try
                {
                    IList <InstanceInfo> infoList = this._eurekaClient.GetInstanceById(instanceConfig.InstanceId);
                    if (infoList != null && infoList.Count > 0)
                    {
                        this._logger.LogDebug("Service instance was online.");
                        return;
                    }
                    Thread.Sleep(1000);
                }
                catch (Exception)
                {
                    Thread.Sleep(1000);
                }
            }

            throw new ThriftyException($"Unable to connect to the eureka server (eureka server: {config.EurekaServerServiceUrls}), please check the swifty server configuration");
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     初始化应用信息管理器
        /// </summary>
        /// <param name="instanceConfig">实例配置</param>
        /// <returns>应用信息管理器</returns>
        ApplicationInfoManager InitializeApplicationInfoManager(IEurekaInstanceConfig instanceConfig)
        {
            if (this._applicationInfoManager == null)
            {
                lock (this)
                {
                    if (ApplicationInfoManager.Instance.InstanceInfo == null)
                    {
                        ApplicationInfoManager.Instance.Initialize(instanceConfig);
                    }

                    this._applicationInfoManager = ApplicationInfoManager.Instance;
                }
            }
            return(this._applicationInfoManager);
        }
Ejemplo n.º 3
0
 /// <summary>
 ///     修改实例状态
 /// </summary>
 /// <param name="stauts">修改的状态</param>
 /// <param name="applicationInfoManager">应用管理器</param>
 void SetAppStatus(InstanceStatus stauts, ApplicationInfoManager applicationInfoManager)
 {
     applicationInfoManager.InstanceStatus = stauts;
 }