89 lines
3.8 KiB
C#
89 lines
3.8 KiB
C#
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<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.AddRedis(config);
|
|
services.AddDGHttpClient();
|
|
services.AddRegisterWorker<WeworkWorker, WeworkWorkerDto>();
|
|
//构建容器
|
|
IServiceProvider serviceProvider = services.BuildServiceProvider();
|
|
var workerManager = serviceProvider.GetRequiredService<IKafkaWorkerManager>();
|
|
await workerManager.RegisterWorker<WeworkWorker, WeworkWorkerDto>("crm-topic");
|
|
await workerManager.RegisterWorker<WeworkWorker, WeworkWorkerDto>("crm-topic");
|
|
await workerManager.RegisterWorker<WeworkWorker, WeworkWorkerDto>("crm-topic");
|
|
await workerManager.RegisterWorker<WeworkWorker, WeworkWorkerDto>("crm-topic");
|
|
await workerManager.RegisterWorker<WeworkWorker, WeworkWorkerDto>("crm-topic");
|
|
var builder = new HostBuilder();
|
|
await builder.RunConsoleAsync();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Fatal(ex, "Host terminated unexpectedly");
|
|
}
|
|
finally
|
|
{
|
|
Log.CloseAndFlush();
|
|
} |