private static void Run(IWebHostBuilder serviceHostBuilder) { using (var serviceHost = serviceHostBuilder.Build()) { IConfiguration configuration = (IConfiguration)serviceHost.Services.GetService(typeof(IConfiguration)); Globals.SetCulture(configuration.GetValue <string>("Culture")); Globals.SetFormatDateCulture(configuration.GetValue <string>("FormatDateCulture")); var taskRun = serviceHost.RunAsync(); // Wait exit Console.CancelKeyPress += (sender, eventArgs) => { Trace.WriteLine("Received a stop notification, engine shutdown"); KilledGracefulInterceptor.Stop(); Trace.WriteLine("engine main service has stopped."); eventArgs.Cancel = true; }; taskRun.Wait(); var taskStop = serviceHost.StopAsync(); taskStop.Wait(); } }
public SubcriptionIncomingEvent(IFactoryBroker brokers, EngineGeneratorConfiguration configuration, WebEngineProvider provider, KilledGracefulInterceptor killed) : base("Service consume incoming event.") { _provider = provider; _domainHeader = configuration.EngineGeneratorModel.DomainHeader; Subscription = brokers.CreateSubscription(configuration.EngineGeneratorModel.WorkflowQueue, context => Callback(context)); _deadQueue = brokers.CreatePublisher(configuration.EngineGeneratorModel.PublishDeadQueueWorkflow); _killed = killed; _killed.StopAction = this.PrepareStop; }
/// <summary> /// IOC inject configuration because EngineConfigurationModel is registered in ioc by ExposeClassAttribute /// </summary> /// <param name="configuration"></param> public WebEngineProvider(EngineGeneratorConfiguration configuration, KilledGracefulInterceptor killer) : base(configuration) { this._killer = killer; this._killer.StopAction = this.Stop; var domains = configuration.EngineConfiguration.Domains; if (domains != null) { foreach (EngineProviderConfiguration config in domains) { this.Add(config.Domain, config.Path); } } }