using ClickHouse.EntityFrameworkCore.Extensions; using DG.EntityFramework; using DG.Kafka; using Exceptionless; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; using ToDoWorker; 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 ToDoWorker"); 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"); ExceptionlessClient.Default.Configuration.DefaultTags.Add("Zxd-ToDoWorker"); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("zxdcrm"), ServerVersion.AutoDetect(config.GetConnectionString("zxdcrm"))); }); services.AddDGEntityFramework(options => { options.UseMySql(config.GetConnectionString("crmcloud"), ServerVersion.AutoDetect(config.GetConnectionString("hgaction"))); }); /* services.AddDGEntityFramework(options => { options.UseClickHouse(config.GetConnectionString("dim")); });*/ services.AddAutoIoc(typeof(IScopedDependency), LifeCycle.Scoped) .AddAutoIoc(typeof(ISingletonDependency), LifeCycle.Singleton) .AddAutoIoc(typeof(ITransientDependency), LifeCycle.Transient) .AddMapper(); services.AddKafkaWorker(config); services.AddWorker(config); services.AddRedis(config); services.AddDGHttpClient(); services.AddRegisterWorker(); //services.AddRegisterWorker(); services.AddRegisterBatchWorker(); //构建容器 IServiceProvider serviceProvider = services.BuildServiceProvider(); var workerManager = serviceProvider.GetRequiredService(); var consumers = config.GetSection("Consumers").Get>(); ; await workerManager.RegisterBatchWorker(consumers?.FirstOrDefault()?.Topic, 1); var builder = new HostBuilder(); await builder.RunConsoleAsync(); } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); } finally { Log.CloseAndFlush(); }