public SchedulerOption(ConsulClient consulClient, Util.Env.EnvModel _EnvModel) { this.consulKVHelper = new ConsulKVHelper(consulClient); this.QueueList = new List <string>() { "share" }; this.BackgroundJobServerOptions = new BackgroundJobServerOptions() { HeartbeatInterval = TimeSpan.FromSeconds(5), ServerCheckInterval = TimeSpan.FromSeconds(2), ServerName = _EnvModel.APP_BUILD_NAME, SchedulePollingInterval = TimeSpan.FromSeconds(1), WorkerCount = this.WorkerCount }; }
/// <summary> /// 使用RabbitMQ Logger 组件服务 /// </summary> /// <param name="app"></param> /// <param name="loggerFactory"></param> /// <param name="strConsulKey"></param> /// <returns></returns> public static IApplicationBuilder UseRabbitMQLoggerService(this IApplicationBuilder app, ILoggerFactory loggerFactory, string strConsulKey = "comm/logger/rabbitmq") { DefaultLoggerFactory = loggerFactory; IConsulKVHelper _ConsulKVHelper = app.ApplicationServices.GetService <IConsulKVHelper>(); try { // 从 Consul 中获取RabbitMQ 位置 RabbitMQLoggerOption conf = _ConsulKVHelper.GetJsonModelAsync <RabbitMQLoggerOption>(strConsulKey).Result; // 添加LoggerFactory loggerFactory.AddRabbitMQLogger(conf); } catch (Exception ex) { _ConsulKVHelper.SetValueAsync(strConsulKey, "{}"); throw new ArgumentException($"注册中心配置[{strConsulKey}]不存在或无法转化为json", ex); } return(app); }
public ConsulHealthChecker(IConsulKVHelper consulKVHelper) { this.consulKVHelper = consulKVHelper; }
public RabbitMQLoggerProvider(IConsulKVHelper consulKVHelper) { this.consulKVHelper = consulKVHelper; }
/// <summary> /// 使用 系统启动可以自动注册以及关闭时候反注册服务 /// </summary> /// <param name="app"></param> /// <param name="lifetime"></param> /// <returns></returns> public static IApplicationBuilder UseMicroService(this IApplicationBuilder app, IApplicationLifetime lifetime) { // 从管道中获取 环境变量配置 EnvModel envModel = app.ApplicationServices.GetService <EnvModel>(); // 从管道中获取 Consul客户端 var consulClient = app.ApplicationServices.GetService <ConsulClient>(); // 从管道中获取 获取 微服务配置 AgentServiceOption _agentServiceOption = app.ApplicationServices.GetService <AgentServiceOption>(); // 从管道中获取 获取服务注册的服务实例 IAgentServiceHelper _AgentServiceBuilder = app.ApplicationServices.GetService <IAgentServiceHelper>(); IConsulKVHelper _ConsulKVHelper = app.ApplicationServices.GetService <IConsulKVHelper>(); // 中间件1 : 健康检查 app.UseHealthChecks(_agentServiceOption.Service_HealthCheck_Route, new HealthCheckOptions() { ResultStatusCodes = { [MsHealthStatus.Healthy] = StatusCodes.Status200OK, [MsHealthStatus.Degraded] = StatusCodes.Status200OK, [MsHealthStatus.Unhealthy] = StatusCodes.Status503ServiceUnavailable }, AllowCachingResponses = false, ResponseWriter = WriteResponse }); #region 务注册 // 构建 服务注册 信息 AgentServiceRegistration serviceRegistration = _AgentServiceBuilder.BuildMicroServiceRegisterInfo(_agentServiceOption); // 取消注册(使用生命周期) lifetime.ApplicationStopping.Register(() => { consulClient.Agent.ServiceDeregister(serviceRegistration.ID).Wait(); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine($"---------- [{DateTime.Now}] 服务[{serviceRegistration.ID}]:反注册成功"); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine(); }); // 添加 注册(先反注册再注册) consulClient.Agent.ServiceRegister(serviceRegistration).Wait(); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine($"---------- [{DateTime.Now}] 服务[{serviceRegistration.ID}]:注册成功"); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine(); // 添加健康检查 管道 app.UseMiddleware <HealthCheckMiddleware>(); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine($"---------- [{DateTime.Now}] 注册:健康检查中间件启动"); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine(); #endregion #region 添加HangFire组件 SchedulerOption schedulerOption = app.ApplicationServices.GetService <SchedulerOption>(); if (schedulerOption.IsEnable) { Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine($"---------- [{DateTime.Now}] 启动调度器服务 ----------"); app.UseHangfireServer(options: schedulerOption.BackgroundJobServerOptions);//启动Hangfire服务 if (schedulerOption.UseDashboard) { Console.WriteLine($"---------- [{DateTime.Now}] 启动调度器管理页面 ----------"); app.UseHangfireDashboard(); } Console.WriteLine("--------------------------------------------------------------------------------"); } #endregion return(app); }