Ejemplo n.º 1
0
        public static async Task Main(string[] args)
        {
            var host = Host.CreateDefaultBuilder(args)
                       .ConfigureAppConfiguration((hostContext, config) =>
            {
                var buided = config.Build();
                var path   = buided["pathToConf"];
                if (!Path.IsPathRooted(path))
                {
                    path = Path.GetFullPath(Path.Combine(hostContext.HostingEnvironment.ContentRootPath, path));
                }
                config.SetBasePath(path);
                var env = hostContext.Configuration.GetValue("ENVIRONMENT", "Production");
                config
                .AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "pathToConf", path }
                }
                                       )
                .AddJsonFile("appsettings.json")
                .AddJsonFile($"appsettings.{env}.json", true)
                .AddJsonFile($"appsettings.services.json", true)
                .AddJsonFile("storage.json")
                .AddJsonFile("notify.json")
                .AddJsonFile("kafka.json")
                .AddJsonFile($"kafka.{env}.json", true)
                .AddEnvironmentVariables()
                .AddCommandLine(args);
            })
                       .ConfigureServices((hostContext, services) =>
            {
                var diHelper = new DIHelper(services);

                diHelper.AddNLogManager("ASC.Notify", "ASC.Notify.Messages");

                services.Configure <NotifyServiceCfg>(hostContext.Configuration.GetSection("notify"));
                diHelper.AddSingleton <IConfigureOptions <NotifyServiceCfg>, ConfigureNotifyServiceCfg>();

                diHelper.TryAddSingleton <CommonLinkUtilitySettings>();
                diHelper.AddSingleton <IConfigureOptions <CommonLinkUtilitySettings>, ConfigureCommonLinkUtilitySettings>();

                diHelper.AddNotifyServiceLauncher();
                services.AddHostedService <NotifyServiceLauncher>();

                diHelper
                .AddJabberSenderService()
                .AddSmtpSenderService()
                .AddAWSSenderService();

                services.AddAutofac(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath);
            })
                       .UseConsoleLifetime()
                       .Build();

            using (host)
            {
                // Start the host
                await host.StartAsync();

                // Wait for the host to shutdown
                await host.WaitForShutdownAsync();
            }
        }