public AccountController( UserResolver <TUser> userResolver, UserManager <TUser> userManager, SignInManager <TUser> signInManager, IIdentityServerInteractionService interaction, IClientStore clientStore, IAuthenticationSchemeProvider schemeProvider, IEventService events, IEmailSender emailSender, IGenericControllerLocalizer <AccountController <TUser, TKey> > localizer, LoginConfiguration loginConfiguration, RegisterConfiguration registerConfiguration) { _userResolver = userResolver; _userManager = userManager; _signInManager = signInManager; _interaction = interaction; _clientStore = clientStore; _schemeProvider = schemeProvider; _events = events; _emailSender = emailSender; _localizer = localizer; _loginConfiguration = loginConfiguration; _registerConfiguration = registerConfiguration; }
public static RegisterConfiguration GetServiceRegisterConfiguration(IConfig config, RegisterOptions options) { RegisterConfiguration registerConfig = new RegisterConfiguration(); registerConfig.Name = config?.Get <string>("kumuluzee.name"); if (string.IsNullOrWhiteSpace(registerConfig.Name)) { registerConfig.Name = "service"; } registerConfig.EnvName = config?.Get <string>("kumuluzee.env.name"); if (string.IsNullOrWhiteSpace(registerConfig.EnvName)) { registerConfig.EnvName = "dev"; } registerConfig.Protocol = config?.Get <string>("kumuluzee.discovery.consul.protocol"); if (string.IsNullOrWhiteSpace(registerConfig.Protocol)) { registerConfig.Protocol = "http"; } registerConfig.Singleton = options.Singleton; registerConfig.Discovery.PingInterval = config?.Get <int?>("kumuluzee.discovery.ping-interval") ?? 20; registerConfig.Discovery.TTL = config?.Get <int?>("kumuluzee.discovery.ttl") ?? 30; registerConfig.Server.Address = config?.Get <string>("kumuluzee.server.http.address"); registerConfig.Server.BaseUrl = config?.Get <string>("kumuluzee.server.base-url"); registerConfig.Server.Port = config?.Get <int?>("kumuluzee.server.http.port") ?? 5000; registerConfig.Version = config?.Get <string>("kumuluzee.version") ?? "1.0.0"; registerConfig.CriticalServiceUnregisterTime = config?.Get <int?>("kumuluzee.discovery.consul.deregister-critical-service-after-s") ?? 60; if (!string.IsNullOrWhiteSpace(options.ServiceName)) { registerConfig.Name = options.ServiceName; } if (options.PingInterval > 0) { registerConfig.Discovery.PingInterval = options.PingInterval; } if (options.TTL > 0) { registerConfig.Discovery.TTL = options.TTL; } if (!string.IsNullOrWhiteSpace(options.Version)) { registerConfig.Version = options.Version; } if (!string.IsNullOrWhiteSpace(options.Environment)) { registerConfig.EnvName = options.Environment; } return(registerConfig); }
public ConsulServiceInstance(RegisterConfiguration regConfig) { ServiceName = $"{regConfig.EnvName}-{regConfig.Name}"; Environment = regConfig.EnvName; Id = $"{regConfig.Name}-{Guid.NewGuid()}"; Version = regConfig.Version; VersionTag = $"version={regConfig.Version}"; Protocol = regConfig.Protocol; Port = regConfig.Server.Port; Address = regConfig.Server.Address; BaseUrl = regConfig.Server.BaseUrl; TTL = regConfig.Discovery.TTL; CriticalServiceUnregisterTime = regConfig.CriticalServiceUnregisterTime; IsSingleton = regConfig.Singleton; }
public AccountApiController( UserManager <TUser> userManager, SignInManager <TUser> signInManager, IEventService events, IEmailSender emailSender, RegisterConfiguration registerConfiguration, LoginConfiguration loginConfiguration, IGenericControllerLocalizer <AccountApiController <TUser, TKey> > localizer, SimpleEmailRenderer emailRenderer) { UserManager = userManager; SignInManager = signInManager; Events = events; EmailSender = emailSender; LoginConfiguration = loginConfiguration; RegisterConfiguration = registerConfiguration; Localizer = localizer; EmailRenderer = emailRenderer; }
/// <summary> /// 服务注册 /// </summary> /// <param name="registerConfiguration">需要注册的参数</param> /// <returns></returns> public Task <WriteResult> ServiceRegister(RegisterConfiguration registerConfiguration) { if (registerConfiguration == null) { throw new ArgumentNullException(nameof(registerConfiguration)); } //健康检查 var httpCheck = new AgentServiceCheck() { DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10), //服务启动多久后注册 Interval = TimeSpan.FromSeconds(10), //健康检查时间间隔,或者称为心跳间隔 TCP = registerConfiguration.TcpHealthCheck?.ToString(), Status = HealthStatus.Passing, Timeout = TimeSpan.FromSeconds(5) }; //服务id var serverId = ""; if (!string.IsNullOrWhiteSpace(registerConfiguration.ServerId)) { serverId = registerConfiguration.ServerId; } else { serverId = env.ApplicationName + "-" + Guid.NewGuid().ToString().Replace("-", ""); } var registration = new AgentServiceRegistration() { Check = httpCheck, ID = serverId, Name = registerConfiguration.ServerName, Address = registerConfiguration.Address?.Address.ToString(), Port = registerConfiguration.Address.Port, Tags = registerConfiguration.Tags?.ToArray()//添加 urlprefix-/servicename 格式的 tag 标签,以便 Fabio 识别 }; return(consulClient.Agent.ServiceRegister(registration)); }
/// <summary> /// 服务注册 /// </summary> /// <param name="consul"></param> public static void UseServiceRegister(this IServiceCollection services, RegisterConfiguration registerConfiguration) { var serviceRegisterManage = services.BuildServiceProvider().GetRequiredService <IServiceRegisterManage>(); serviceRegisterManage.ServiceRegister(registerConfiguration); }