diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Program.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Program.cs index 6227a613..d3e88145 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Program.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Program.cs @@ -139,7 +139,7 @@ builder.Services.AddHeiCaptcha(); #endregion builder.Services.AddHttpContextAccessor(); #region -//添加缩略图 +//添加缩略图,引入了System.Drawing,linu需要插件支持 #endregion builder.Services.AddSingleton(); diff --git a/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/ConsulRegisterHostExtend.cs b/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/ConsulRegisterHostExtend.cs new file mode 100644 index 00000000..4061172f --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/ConsulRegisterHostExtend.cs @@ -0,0 +1,126 @@ +锘縰sing Consul; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Options; +using System; +using System.Threading; +using System.Threading.Tasks; +using Yi.Framework.Common.IOCOptions; + +namespace Yi.Framework.WebCore.MiddlewareExtend +{ + /// + /// 娉ㄥ唽ConsulRegisterService 杩欎釜servcie鍦╝pp鍚姩鐨勬椂鍊欎細鑷姩娉ㄥ唽鏈嶅姟淇℃伅 + /// + public class ConsulRegisterHostExtend : IHostedService + { + private readonly ConsulRegisterOption _consulRegisterOptions; + private readonly ConsulClientOption _consulClientOptions; + public ConsulRegisterHostExtend() + { + _consulRegisterOptions = Appsettings.app("ConsulRegisterOption"); + + _consulClientOptions = Appsettings.app("ConsulClientOption"); + } + public async Task StartAsync(CancellationToken cancellationToken) + { + var httpPort = this._consulRegisterOptions.Port; + //var grpcPort = Convert.ToInt32(Appsettings.app("GrpcPort")); + //------------------Http------------------ + using (ConsulClient client = new ConsulClient(c => + { + c.Address = new Uri($"http://{this._consulClientOptions.IP}:{this._consulClientOptions.Port}/"); + c.Datacenter = this._consulClientOptions.Datacenter; + })) + { + var serviceId = $"{this._consulRegisterOptions.IP}:{httpPort}-{this._consulRegisterOptions.GroupName}"; + + await client.Agent.ServiceDeregister(serviceId, cancellationToken); + + Console.WriteLine($"寮濮嬪悜Consul娉ㄥ唽Http[{serviceId}]鏈嶅姟 ..."); + + await client.Agent.ServiceRegister(new AgentServiceRegistration() + { + ID = serviceId,//鍞竴Id + Name = this._consulRegisterOptions.GroupName,//缁勫悕绉-Group + Address = this._consulRegisterOptions.IP, + Port = httpPort, + Tags = new string[] { "Http" }, + Check = new AgentServiceCheck() + { + Interval = TimeSpan.FromSeconds(this._consulRegisterOptions.Interval), + HTTP = $"http://{_consulRegisterOptions.IP}:{httpPort}/Health", + //GRPC = $"{this._consulRegisterOptions.IP}:{grpcPort}",//gRPC鐗规湁 + GRPCUseTLS = false,//鏀寔http + Timeout = TimeSpan.FromSeconds(this._consulRegisterOptions.Timeout), + DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(this._consulRegisterOptions.DeregisterCriticalServiceAfter), + + } + }); + } + + + //------------------Grpc------------------ + //using (ConsulClient client = new ConsulClient(c => + //{ + // c.Address = new Uri($"http://{this._consulClientOptions.IP}:{this._consulClientOptions.Port}/"); + // c.Datacenter = this._consulClientOptions.Datacenter; + //})) + //{ + // var serviceId = $"{this._consulRegisterOptions.IP}:{grpcPort}-{this._consulRegisterOptions.GrpcGroupName}"; + + // await client.Agent.ServiceDeregister(serviceId, cancellationToken); + + // Console.WriteLine($"寮濮嬪悜Consul娉ㄥ唽Grpc[{serviceId}]鏈嶅姟 ..."); + + // await client.Agent.ServiceRegister(new AgentServiceRegistration() + // { + // ID = serviceId,//鍞竴Id + // Name = this._consulRegisterOptions.GrpcGroupName,//缁勫悕绉-Group + // Address = this._consulRegisterOptions.IP, + // Port = grpcPort, + // Tags = new string[] { "Grpc" }, + // Check = new AgentServiceCheck() + // { + // Interval = TimeSpan.FromSeconds(this._consulRegisterOptions.Interval), + // //HTTP = this._consulRegisterOption.HealthCheckUrl, + // GRPC = $"{this._consulRegisterOptions.IP}:{grpcPort}",//gRPC鐗规湁 + // GRPCUseTLS = false,//鏀寔http + // Timeout = TimeSpan.FromSeconds(this._consulRegisterOptions.Timeout), + // DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(this._consulRegisterOptions.DeregisterCriticalServiceAfter), + + // } + // }); + //} + } + + /// + /// 姝e父娉ㄩ攢璋冪敤 + /// + /// + /// + public async Task StopAsync(CancellationToken cancellationToken) + { + var httpPort = this._consulRegisterOptions.Port; + //var grpcPort = Appsettings.app("GrpcPort"); + + + using (ConsulClient client = new ConsulClient(c => + { + c.Address = new Uri($"http://{this._consulClientOptions.IP}:{this._consulClientOptions.Port}/"); + c.Datacenter = this._consulClientOptions.Datacenter; + })) { + + + var serviceId = $"{this._consulRegisterOptions.GroupName}:{this._consulRegisterOptions.IP}-{httpPort}"; + + //var grpcServiceId = $"{this._consulRegisterOptions.GrpcGroupName}:{this._consulRegisterOptions.IP}-{grpcPort}"; + + await client.Agent.ServiceDeregister(serviceId, cancellationToken); + //await client.Agent.ServiceDeregister(grpcServiceId, cancellationToken); + Console.WriteLine($"寮濮婥onsul娉ㄩ攢[{serviceId}]鏈嶅姟 ..."); + + } + + } + } +}