using DG.EntityFramework; using DG.Kafka.Worker; using Exceptionless; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Serilog; using WeworkUserWorker.Config; using Zxd.Core.Shared.Dto; using Zxd.EntityFramework; try { var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); Console.WriteLine($"Env: {env}"); var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env ?? "Production"}.json", true) .AddJsonFile("Serilog.json") .AddJsonFile($"Serilog.{env ?? "Production"}.json", true) .Build(); var logger = new LoggerConfiguration() .ReadFrom.Configuration(config) .WriteTo.Exceptionless(config.GetValue("Exceptionless:ApiKey"), config.GetValue("Exceptionless:ServerUrl"), new string[] { "WeworkUserWorker" }) .CreateLogger(); Log.Logger = logger; Log.Information("Starting WeworkUserWorker"); IServiceCollection services = new ServiceCollection(); services.AddLogging(logging => { logging.ClearProviders(); logging.AddSerilog(); }); services.AddSingleton(config); services.AddOptions() .Configure(e => config.GetSection("SystemConfig").Bind(e)); ExceptionlessClient.Default.Startup(config.GetValue("Exceptionless:ApiKey")); ExceptionlessClient.Default.Configuration.ServerUrl = config.GetValue("Exceptionless:ServerUrl"); //services.AddRedis(config); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("zxdcrm"), ServerVersion.AutoDetect(config.GetConnectionString("zxdcrm"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("dncmsbase"), ServerVersion.AutoDetect(config.GetConnectionString("dncmsbase"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("usercenter"), ServerVersion.AutoDetect(config.GetConnectionString("usercenter"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("dncms"), ServerVersion.AutoDetect(config.GetConnectionString("dncms"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("crm"), ServerVersion.AutoDetect(config.GetConnectionString("crm"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("companyBaseConf"), ServerVersion.AutoDetect(config.GetConnectionString("companyBaseConf"))); }); services.AddKafkaWorker(config); services.AddRedis(config); services.AddDGHttpClient(); services.AddRegisterWorker(); //构建容器 IServiceProvider serviceProvider = services.BuildServiceProvider(); var workerManager = serviceProvider.GetRequiredService(); await workerManager.RegisterWorker("crm-topic"); await workerManager.RegisterWorker("crm-topic"); await workerManager.RegisterWorker("crm-topic"); await workerManager.RegisterWorker("crm-topic"); await workerManager.RegisterWorker("crm-topic"); var builder = new HostBuilder(); await builder.RunConsoleAsync(); } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); } finally { Log.CloseAndFlush(); }