Zxd.Core/code/CommonWorker/Program.cs

85 lines
3.8 KiB
C#

using CommonWorker.Config;
using CommonWorker.Dto;
using CommonWorker.Workers;
using DG.Kafka.Worker;
using Exceptionless;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Hosting;
using Serilog;
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<string>("Exceptionless:ApiKey"), config.GetValue<string>("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<SystemConfig>(e => config.GetSection("SystemConfig").Bind(e));
ExceptionlessClient.Default.Startup(config.GetValue<string>("Exceptionless:ApiKey"));
ExceptionlessClient.Default.Configuration.ServerUrl = config.GetValue<string>("Exceptionless:ServerUrl");
//services.AddRedis(config);
services.AddDGEntityFramework<ZxdDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("zxdcrm"), ServerVersion.AutoDetect(config.GetConnectionString("zxdcrm")));
});
services.AddDGEntityFramework<DncmsbaseDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("dncmsbase"), ServerVersion.AutoDetect(config.GetConnectionString("dncmsbase")));
});
services.AddDGEntityFramework<UserCenterDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("usercenter"), ServerVersion.AutoDetect(config.GetConnectionString("usercenter")));
});
services.AddDGEntityFramework<DncmsDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("dncms"), ServerVersion.AutoDetect(config.GetConnectionString("dncms")));
});
services.AddDGEntityFramework<CrmDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("crm"), ServerVersion.AutoDetect(config.GetConnectionString("crm")));
});
services.AddDGEntityFramework<CompanyBaseConfDbContext>(options =>
{
options.UseMySql(config.GetConnectionString("companyBaseConf"), ServerVersion.AutoDetect(config.GetConnectionString("companyBaseConf")));
});
services.AddKafkaWorker(config);
services.AddDGHttpClient();
services.AddRegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>();
//构建容器
IServiceProvider serviceProvider = services.BuildServiceProvider();
var workerManager = serviceProvider.GetRequiredService<IKafkaWorkerManager>();
await workerManager.RegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>("ResPassTime");
await workerManager.RegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>("ResPassTime");
await workerManager.RegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>("ResPassTime");
await workerManager.RegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>("ResPassTime");
await workerManager.RegisterWorker<CustomerPassTimeWorker, ResPassTimeDto>("ResPassTime");
var builder = new HostBuilder();
await builder.RunConsoleAsync();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}