private async Task StartApplication()
        {
            try
            {
                // NOTE: Job not yet recieve and process IsAlive requests here

                await ApplicationContainer.Resolve <IStartupManager>().StartAsync();

#if azurequeuesub
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));

                _triggerHostTask = _triggerHost.Start();
#endif
                await Log.WriteMonitorAsync("", Program.EnvInfo, "Started");

#if (!DEBUG)
                await AutoRegistrationInMonitoring.RegisterAsync(Configuration, _monitoringServiceUrl, Log);
#endif
            }
            catch (Exception ex)
            {
                await Log.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);

                throw;
            }
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            using (var logFactory = LogFactory.Create().AddUnbufferedConsole())
            {
                var builder = new ContainerBuilder();

                builder.RegisterInstance(logFactory);

                builder.AddTriggers(pool =>
                {
                    pool.AddDefaultConnection(new FakeReloadingManager("UseDevelopmentStorage=true"));
                });

                builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());

                using (var container = builder.Build())
                {
                    var host = new TriggerHost(new AutofacServiceProvider(container));
                    var task = host.Start();

                    Console.ReadKey();
                    host.Cancel();
                    task.Wait();
                    Console.ReadKey();
                }
            }
        }
 public StartupManager(
     ILogFactory logFactory,
     TriggerHost triggerHost)
 {
     _log         = logFactory.CreateLog(this);
     _triggerHost = triggerHost;
 }
 public StartupManager(
     TriggerHost triggerHost,
     ICqrsEngine cqrsEngine)
 {
     _triggerHost = triggerHost;
     _cqrsEngine  = cqrsEngine;
 }
Esempio n. 5
0
        public void Run()
        {
            var containerBuilder = _binder.Bind(_configurationRoot);
            var ioc = containerBuilder.Build();

            var triggerHost = new TriggerHost(new AutofacServiceProvider(ioc));

            triggerHost.Start().Wait();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
#if DEBUG
            Console.WriteLine("Starting... Is DEBUG");
#else
            Console.WriteLine("Starting... Is RELEASE");
#endif

            var         webHostCancellationTokenSource = new CancellationTokenSource();
            IWebHost    webHost         = null;
            TriggerHost triggerHost     = null;
            Task        webHostTask     = null;
            Task        triggerHostTask = null;
            var         end             = new ManualResetEvent(false);

            try
            {
                AssemblyLoadContext.Default.Unloading += ctx =>
                {
                    Console.WriteLine("SIGTERM recieved");

                    webHostCancellationTokenSource.Cancel();

                    end.WaitOne();
                };

                webHost = new WebHostBuilder()
                          .UseKestrel()
                          .UseUrls("http://*:5000")
                          .UseContentRoot(Directory.GetCurrentDirectory())
                          .UseStartup <Startup>()
                          .UseApplicationInsights()
                          .Build();

                triggerHost = new TriggerHost(webHost.Services);

                webHostTask     = webHost.RunAsync(webHostCancellationTokenSource.Token);
                triggerHostTask = triggerHost.Start();

                // WhenAny to handle any task termination with exception,
                // or gracefully termination of webHostTask
                Task.WhenAny(webHostTask, triggerHostTask).Wait();
            }
            finally
            {
                Console.WriteLine("Terminating...");

                webHostCancellationTokenSource.Cancel();
                triggerHost?.Cancel();

                webHostTask?.Wait();
                triggerHostTask?.Wait();

                end.Set();
            }
        }
        public StartupManager(
            IEnumerable <IStartStop> startables
#if azurequeuesub
            , TriggerHost triggerHost
#endif
            )
        {
            _startables = startables;
#if azurequeuesub
            _triggerHost = triggerHost;
#endif
        }
        static void Main(string[] args)
        {
            var         webHostCancellationTokenSource = new CancellationTokenSource();
            IWebHost    webHost         = null;
            TriggerHost triggerHost     = null;
            Task        webHostTask     = null;
            Task        triggerHostTask = null;
            var         end             = new ManualResetEvent(false);

            try
            {
                AssemblyLoadContext.Default.Unloading += ctx =>
                {
                    Console.WriteLine("SIGTERM recieved");

                    webHostCancellationTokenSource.Cancel();

                    end.WaitOne();
                };

                webHost = new WebHostBuilder()
                          .UseKestrel()
                          .UseUrls("http://*:5000")
                          .UseContentRoot(Directory.GetCurrentDirectory())
                          .UseStartup <Startup>()
                          .UseApplicationInsights()
                          .Build();

                var version = typeof(Program).GetTypeInfo().Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version;
                Console.WriteLine($"Build Version {version}");

                triggerHost = new TriggerHost(webHost.Services);

                webHostTask     = Task.Factory.StartNew(() => webHost.Run());
                triggerHostTask = triggerHost.Start();

                // WhenAny to handle any task termination with exception,
                // or gracefully termination of webHostTask
                Task.WhenAny(webHostTask, triggerHostTask).Wait();
            }
            finally
            {
                Console.WriteLine("Terminating...");

                webHostCancellationTokenSource.Cancel();
                triggerHost?.Cancel();

                webHostTask?.Wait();
                triggerHostTask?.Wait();

                end.Set();
            }
        }
Esempio n. 9
0
 protected override void OnStart(string[] args)
 {
     if (_Host == null)
     {
         _Host = new WorkerHost();
     }
     _Host.Start();
     if (_TriggerHost == null)
     {
         _TriggerHost = new TriggerHost();
     }
     _TriggerHost.Start();
 }
        public ShutdownManager(
            ILogFactory logFactory,
#if azurequeuesub
            TriggerHost triggerHost,
#endif
            IEnumerable <IStopable> items)
        {
            _log   = logFactory.CreateLog(this);
            _items = items;
#if azurequeuesub
            _triggerHost = triggerHost;
#endif
        }
Esempio n. 11
0
 protected override void OnStart(string[] args)
 {
     if (_Host == null)
     {
         _Host = new WorkerHost();
     }
     _Host.Start();
     if (_TriggerHost == null)
     {
         _TriggerHost = new TriggerHost();
     }
     _TriggerHost.Start();
 }
        public ShutdownManager(
            IEnumerable <IStartStop> stoppables,
            IEnumerable <IStopable> items,
#if azurequeuesub
            TriggerHost triggerHost,
#endif
            ILogFactory logFactory)
        {
            _stoppables = stoppables;
            _items      = items;
#if azurequeuesub
            _triggerHost = triggerHost;
#endif
            _log = logFactory.CreateLog(this);
        }
Esempio n. 13
0
        public static void Main(string[] args)
        {
            try
            {
                Console.Title = "SolarCoin CashOut job";

#if DEBUG
                var settings = new AppSettings <CashOutSettings>().LoadFile("appsettings.Debug.json");
#elif RELEASE
                var settings = new AppSettings <CashOutSettings>().LoadFromWeb(Environment.GetEnvironmentVariable("SlrSettingsUrl")).Result;
                settings.HotWalletPrivKey = Environment.GetEnvironmentVariable("HotWalletPrivateKey");
#endif

                ServiceProvider = new AutofacServiceProvider(Bootstrap.ConfigureBuilder(ComponentName, settings).Build());

                var rpcClient = ServiceProvider.GetService <IJsonRpcClient>();

                Console.WriteLine("Importing private key to the local node - this may take up to several minutes...");

                rpcClient.ImportPrivateKey(settings.HotWalletPrivKey).GetAwaiter().GetResult();

                Console.WriteLine("The key was imported!");

                TriggerHost = new TriggerHost(ServiceProvider);

                AssemblyLoadContext.Default.Unloading += ctx =>
                {
                    Console.WriteLine("SIGTERM recieved");

                    TriggerHost.Cancel();
                };

                TriggerHost.Start().GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                TriggerHost?.Cancel();

                Task.Delay(1000).GetAwaiter().GetResult();

                ServiceProvider?.GetService <ILog>()?.WriteErrorAsync(ComponentName, "", "", e).GetAwaiter().GetResult();

                e.PrintToConsole();
#if DEBUG
                Console.ReadKey();
#endif
            }
        }
Esempio n. 14
0
        private async Task StartApplication()
        {
            try
            {
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));

                _triggerHostTask = _triggerHost.Start();
                await Log.WriteMonitorAsync("", Program.EnvInfo, "Started");
            }
            catch (Exception ex)
            {
                await Log.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);

                throw;
            }
        }
Esempio n. 15
0
        private static void Work([CLAP.Description("worker to start, or none to start all")] string worker)
        {
            var host = new WorkerHost();

            host.Start(worker);
            var triggerHost = new TriggerHost();

            triggerHost.Start();
            Console.WriteLine();
            Console.WriteLine("PRESS ANY KEY TO STOP");
            Console.WriteLine();
            Console.ReadKey(true);
            host.Stop();
            triggerHost.Stop();
            Console.WriteLine("Goodbye!");
        }
Esempio n. 16
0
        private void StartApplication()
        {
            try
            {
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));

                _triggerHostTask = _triggerHost.Start();
            }
            catch (Exception ex)
            {
                Log?.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);
                if (Log == null)
                {
                    Console.WriteLine(ex);
                }
            }
        }
        protected override void Load(ContainerBuilder builder)
        {
            Mapper.Initialize(cfg =>
            {
                cfg.CreateMap <IBcnCredentialsRecord, BcnCredentialsRecordEntity>().IgnoreTableEntityFields();
                cfg.CreateMap <IEthereumTransactionRequest, EthereumTransactionReqEntity>().IgnoreTableEntityFields()
                .ForMember(x => x.SignedTransferVal, config => config.Ignore())
                .ForMember(x => x.OperationIdsVal, config => config.Ignore());
            });

            Mapper.Configuration.AssertConfigurationIsValid();

            builder.Register(ctx =>
            {
                var scope = ctx.Resolve <ILifetimeScope>();
                var host  = new TriggerHost(new AutofacServiceProvider(scope));
                return(host);
            }).As <TriggerHost>()
            .SingleInstance();

            builder.RegisterType <StartupManager>()
            .As <IStartupManager>()
            .SingleInstance();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>()
            .SingleInstance();

            if (string.IsNullOrWhiteSpace(_jobSettings.Db.BitCoinQueueConnectionString))
            {
                builder.AddTriggers();
            }
            else
            {
                builder.AddTriggers(pool =>
                {
                    pool.AddDefaultConnection(_dbSettingsManager.ConnectionString(x => x.BitCoinQueueConnectionString));
                });
            }

            BindRabbitMq(builder);
            BindRepositories(builder);
            BindServices(builder);
            BindClients(builder);
        }
Esempio n. 18
0
        private async Task StartApplication()
        {
            try
            {
                // NOTE: Job not yet recieve and process IsAlive requests here
                
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));
                _triggerHost.ProvideAssembly(GetType().GetTypeInfo().Assembly);
                _triggerHostTask = _triggerHost.Start();

                await Log.WriteMonitorAsync("", "", "Started");
            }
            catch (Exception ex)
            {
                await Log.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);
                throw;
            }
        }
Esempio n. 19
0
        private async Task StartApplication()
        {
            try
            {
                var cqrs = ApplicationContainer.Resolve <ICqrsEngine>(); // bootstrap

                _triggerHost     = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));
                _triggerHostTask = _triggerHost.Start();

                await Log.WriteMonitorAsync("", "", "Started");
            }
            catch (Exception ex)
            {
                await Log.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);

                throw;
            }
        }
Esempio n. 20
0
        private async Task StartApplication()
        {
            try
            {
                // NOTE: Job not yet recieve and process IsAlive requests here
#if !DEBUG
                await Configuration.RegisterInMonitoringServiceAsync(_monitoringServiceUrl, _healthNotifier);
#endif
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));

                _triggerHostTask = _triggerHost.Start();
                _healthNotifier.Notify("Started", Program.EnvInfo);
            }
            catch (Exception ex)
            {
                _log.Critical(ex);
                throw;
            }
        }
Esempio n. 21
0
        public void RunJobs()
        {
            var triggerHost = new TriggerHost(Services);

            triggerHost.ProvideAssembly(GetType().GetTypeInfo().Assembly);

            var end = new ManualResetEvent(false);

            AssemblyLoadContext.Default.Unloading += ctx =>
            {
                Console.WriteLine("SIGTERM recieved");
                triggerHost.Cancel();

                end.WaitOne();
            };

            triggerHost.Start().Wait();
            end.Set();
        }
Esempio n. 22
0
        private async Task StartApplication()
        {
            try
            {
                // NOTE: Service not yet recieve and process requests here
                _triggerHost = new TriggerHost(new AutofacServiceProvider(ApplicationContainer));

                _triggerHostTask = _triggerHost.Start();
                await ApplicationContainer.Resolve <IStartupManager>().StartAsync();

                await Log.WriteInfoAsync("", "", "Started");
            }
            catch (Exception ex)
            {
                await Log.WriteFatalErrorAsync(nameof(Startup), nameof(StartApplication), "", ex);

                throw;
            }
        }
Esempio n. 23
0
        private void RegisterAzureQueueHandlers(ContainerBuilder builder)
        {
            builder.Register(ctx =>
            {
                var scope = ctx.Resolve <ILifetimeScope>();
                var host  = new TriggerHost(new AutofacServiceProvider(scope));
                return(host);
            }).As <TriggerHost>()
            .SingleInstance();

            // NOTE: You can implement your own poison queue notifier for azure queue subscription.
            // See https://github.com/LykkeCity/JobTriggers/blob/master/readme.md
            // builder.Register<PoisionQueueNotifierImplementation>().As<IPoisionQueueNotifier>();

            builder.AddTriggers(
                pool =>
            {
                pool.AddDefaultConnection(_settingsManager.Nested(s => s.AzureQueue.ConnectionString));
            });
        }
Esempio n. 24
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime appLifetime)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStatusCodePagesWithReExecute("/error/{0}");
            app.UseMvc();
            //app.UseSwagger();
            //app.UseSwaggerUi();
            app.UseStaticFiles();

            this.TriggerHost = new TriggerHost(ServiceProvider);
            this.TriggerHost.ProvideAssembly(typeof(MainChainFunctions).GetTypeInfo().Assembly);

            appLifetime.ApplicationStarted.Register(StartApplication);
            appLifetime.ApplicationStopping.Register(StopApplication);
            appLifetime.ApplicationStopped.Register(CleanUp);
        }
Esempio n. 25
0
        public void Run()
        {
            // Load settings
            var settingsUrl = Configuration["SettingsUrl"];

            if (string.IsNullOrWhiteSpace(settingsUrl))
            {
                // Environment variable "SettingsUrl" with URL to settings file (e.g. "https://settings-dev.lykkex.net/xJNaS5XHZg6DfuUccyKfNcSiiIPMzM1E_WithdrawalRequestScheduler") should exist
                // You can do that at Project's properties -> Debug -> Environment Variables

                Console.WriteLine($"''SettingsUrl'' environment variable empty or not found");
                return;
            }

            var httpClient     = new HttpClient();
            var response       = httpClient.GetAsync(settingsUrl).Result;
            var settingsString = response.Content.ReadAsStringAsync().Result;
            var settings       = Newtonsoft.Json.JsonConvert.DeserializeObject <AppSettings>(settingsString);


            var containerBuilder = new AzureBinder().Bind(settings.Settings);
            var ioc = containerBuilder.Build();

            var triggerHost = new TriggerHost(new AutofacServiceProvider(ioc));

            triggerHost.ProvideAssembly(GetType().GetTypeInfo().Assembly);

            var end = new ManualResetEvent(false);

            AssemblyLoadContext.Default.Unloading += ctx =>
            {
                Console.WriteLine("SIGTERM recieved");
                triggerHost.Cancel();

                end.WaitOne();
            };

            triggerHost.Start().Wait();
            end.Set();
        }
Esempio n. 26
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public IServiceProvider ConfigureServices(IServiceCollection services)
        //public void ConfigureServices(IServiceCollection services)
        {
            var settings = GeneralSettingsReader.ReadGeneralSettings <BaseSettings>(Configuration,
                                                                                    "OffchainMonitorSettings");

            services.AddMvc(o =>
            {
                o.Filters.Add(new HandleAllExceptionsFilterFactory());
            });

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info {
                    Title = "OffchainMonitor_Api", Version = "v1"
                });
                options.DescribeAllEnumsAsStrings();

                //Determine base path for the application.
                var basePath = PlatformServices.Default.Application.ApplicationBasePath;

                //Set the comments path for the swagger json and ui.
                var xmlPath = Path.Combine(basePath, "OffchainMonitorApi.xml");
                options.IncludeXmlComments(xmlPath);
            });

            var builder = new SqlliteBinder().Bind(settings);

            builder.Populate(services);
            builder.RegisterType <TimerTriggerBinding>();
            builder.RegisterType <QueueTriggerBinding>();
            builder.RegisterType <CommitmentBroadcastCheck>();
            var container   = builder.Build();
            var triggerHost = new TriggerHost(new AutofacServiceProvider(container));

            triggerHost.ProvideAssembly(GetType().GetTypeInfo().Assembly);
            triggerHost.StartAndBlock();

            return(new AutofacServiceProvider(container));
        }
Esempio n. 27
0
        public static void Main(string[] args)
        {
            try
            {
                Console.Title = "SolarCoin CashIn Handler job";

#if DEBUG
                var settings = new AppSettings <CashInHandlerSettings>().LoadFile("appsettings.Debug.json");
#elif RELEASE
                var settings = new AppSettings <CashInHandlerSettings>().LoadFromWeb(Environment.GetEnvironmentVariable("SlrSettingsUrl")).Result;
#endif

                ServiceProvider = new AutofacServiceProvider(Bootrsrap.ConfigureBuilder(ComponentName, settings).Build());

                TriggerHost = new TriggerHost(ServiceProvider);

                AssemblyLoadContext.Default.Unloading += ctx =>
                {
                    Console.WriteLine("SIGTERM recieved");

                    TriggerHost.Cancel();
                };

                TriggerHost.Start().GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                TriggerHost?.Cancel();

                Task.Delay(1000).GetAwaiter().GetResult();

                ServiceProvider?.GetService <ILog>()?.WriteErrorAsync(ComponentName, "", "", e).GetAwaiter().GetResult();

                e.PrintToConsole();
#if DEBUG
                Console.ReadKey();
#endif
            }
        }
Esempio n. 28
0
        public static void Main(string[] args)
        {
            try
            {
#if DEBUG
                var settings = new AppSettings <AlertsSettings>().LoadFile("appsettings.Debug.json");
#elif RELEASE
                var settings = new AppSettings <AlertsSettings>().LoadFromEnvironment();
#endif
                BsonClassMap.RegisterClassMap <TransactionMongoEntity>();

                ServiceProvider = new AutofacServiceProvider(Bootstrap.ConfigureBuilder(ComponentName, settings).Build());

                TriggerHost = new TriggerHost(ServiceProvider);

                AssemblyLoadContext.Default.Unloading += ctx =>
                {
                    Console.WriteLine("SIGTERM recieved");

                    TriggerHost.Cancel();
                };


                TriggerHost.Start().GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                TriggerHost?.Cancel();

                ServiceProvider?.GetService <ILog>()?.WriteErrorAsync(ComponentName, "", "", e).GetAwaiter().GetResult();

                e.PrintToConsole();
#if DEBUG
                Console.ReadKey();
#endif
            }
        }
Esempio n. 29
0
        public static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();

            ILog log = new LogToConsole();

            builder.RegisterInstance(log);

            builder.AddTriggers(pool =>
            {
                pool.AddDefaultConnection("UseDevelopmentStorage=true");
            });

            builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
            var container = builder.Build();

            var host = new TriggerHost(new AutofacServiceProvider(container));
            var task = host.Start();

            Console.ReadKey();
            host.Cancel();
            task.Wait();
            Console.ReadKey();
        }
Esempio n. 30
0
        public void Run()
        {
            var settings = GeneralSettingsReader.ReadGeneralSettings <GeneralSettings>(Configuration.GetConnectionString("Settings"));

            var containerBuilder = new AzureBinder().Bind(settings.ChronobankJobs);
            var ioc = containerBuilder.Build();

            var triggerHost = new TriggerHost(new AutofacServiceProvider(ioc));

            triggerHost.ProvideAssembly(GetType().GetTypeInfo().Assembly);

            var end = new ManualResetEvent(false);

            AssemblyLoadContext.Default.Unloading += ctx =>
            {
                Console.WriteLine("SIGTERM recieved");
                triggerHost.Cancel();

                end.WaitOne();
            };

            triggerHost.Start().Wait();
            end.Set();
        }
Esempio n. 31
0
 private static void Work([CLAP.Description("worker to start, or none to start all")]string worker)
 {
     var host = new WorkerHost();
     host.Start(worker);
     var triggerHost = new TriggerHost();
     triggerHost.Start();
     Console.WriteLine();
     Console.WriteLine("PRESS ANY KEY TO STOP");
     Console.WriteLine();
     Console.ReadKey(true);
     host.Stop();
     triggerHost.Stop();
     Console.WriteLine("Goodbye!");
 }
Esempio n. 32
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddMvc()
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
            });

            services.AddSwaggerGen(options =>
            {
                options.DefaultLykkeConfiguration("v1", "SlackNotifications Job API");
            });

            var builder         = new ContainerBuilder();
            var settingsManager = Configuration.LoadSettings <AppSettings>();

            Log = CreateLogWithSlack(services, settingsManager);
            builder.RegisterInstance(Log).As <ILog>().SingleInstance();

            var settings = settingsManager.CurrentValue;

            builder.RegisterInstance(settings.SlackNotificationsJobSettings).SingleInstance();
            builder.RegisterType <SlackNotifcationsConsumer>();

            if (!string.IsNullOrEmpty(settings.SlackNotificationsJobSettings.ForwardMonitorMessagesQueueConnString))
            {
                builder.RegisterInstance <IMsgForwarder>(new MsgForwarder(AzureQueueExt.Create(
                                                                              settingsManager.ConnectionString(x => x.SlackNotificationsJobSettings.ForwardMonitorMessagesQueueConnString),
                                                                              "slack-notifications-monitor"))).SingleInstance();
            }
            else
            {
                builder.RegisterInstance <IMsgForwarder>(new MsgForwarderStub()).SingleInstance();
            }

            builder.RegisterType <NotificationFilter>().As <INotificationFilter>().SingleInstance();
            builder
            .RegisterType <SrvSlackNotifications>()
            .WithParameter(TypedParameter.From(settings.SlackIntegration))
            .WithParameter(TypedParameter.From(settings))
            .As <ISlackNotificationSender>();
            builder
            .Register(c => MessagesRepository.Create(settingsManager.Nested(s => s.SlackNotificationsJobSettings.FullMessagesConnString)))
            .As <IMessagesRepository>();

            builder.AddTriggers(pool =>
            {
                pool.AddDefaultConnection(settingsManager.ConnectionString(x => x.SlackNotificationsJobSettings.SharedStorageConnString));
            });

            builder.RegisterType <UnmuteHandler>()
            .As <IStartable>()
            .AutoActivate()
            .SingleInstance();

            builder.Populate(services);

            ApplicationContainer = builder.Build();

            var serviceProvider = new AutofacServiceProvider(ApplicationContainer);

            _triggerHost = new TriggerHost(serviceProvider);
            _triggerHost.ProvideAssembly(typeof(SlackNotifcationsConsumer).Assembly);

            return(serviceProvider);
        }