static void Main(string[] args) { Console.WriteLine("Starting APP"); #region DI Container Builder var builder = new ContainerBuilder(); builder.RegisterType <RedisHelper>().As <ICacheHelper>(); builder.RegisterType <ApplicationConfig>().As <IApplicationConfig>(); builder.RegisterType <RabbitMQHelper>().As <IMessageQueueHelper>(); builder.RegisterType <FileDataModel>().As <IFileDataModel>(); builder.RegisterType <Log4NetHelper>().As <ILogger>(); builder.RegisterType <AzureBlobStorageHelper>().As <IFileUploadHelper>(); builder.RegisterType <FileUploadHub>().As <IFileUploadHub>(); var container = builder.Build(); #endregion using (var scope = container.BeginLifetimeScope()) { #region DI Resolver _logger = scope.Resolve <ILogger>(); _cacheHelper = scope.Resolve <ICacheHelper>(); _messageQueueHelper = scope.Resolve <IMessageQueueHelper>(); _applicationConfig = scope.Resolve <IApplicationConfig>(); _fileDataModel = scope.Resolve <IFileDataModel>(); _fileUploadHelper = scope.Resolve <IFileUploadHelper>(); _fileUploadHub = scope.Resolve <IFileUploadHub>(); #endregion var fileProcessor = new FileProcessor(_fileDataModel, _fileUploadHelper, _applicationConfig, _fileUploadHub); var webserverHelper = new WebServerHelper(_applicationConfig); #region Processors Task.Run(() => _messageQueueHelper.ReadMessages <QueueFileMetaDataModel>(_applicationConfig, fileProcessor.FilePushed, _applicationConfig.FileDataCreateQueue)); Task.Run(() => _messageQueueHelper.ReadMessages <QueueFileMetaDataModel>(_applicationConfig, fileProcessor.FileDelete, _applicationConfig.FileMetaDeleteQueue)); Task.Run(() => _messageQueueHelper.ReadMessages <QueueFileMetaDataModel>(_applicationConfig, fileProcessor.FileOpened, _applicationConfig.FileOpenedQueue)); #endregion Task.Run(() => webserverHelper.StartWebServer()); } Console.ReadLine(); }
static void Main(string[] args) { #region DI Container Builder var builder = new ContainerBuilder(); builder.RegisterType <RedisHelper>().As <ICacheHelper>(); builder.RegisterType <ApplicationConfig>().As <IApplicationConfig>(); builder.RegisterType <RabbitMQHelper>().As <IMessageQueueHelper>(); builder.RegisterType <QueueDataModel>().As <IQueueDataModel>(); builder.RegisterType <AgentDataModel>().As <IAgentDataModel>(); builder.RegisterType <ChatHub>().As <IChatHub>(); builder.RegisterType <QueueDataModel>().As <IQueueDataModel>().SingleInstance(); var container = builder.Build(); #endregion using (var scope = container.BeginLifetimeScope()) { #region DI Resolver _cacheHelper = scope.Resolve <ICacheHelper>(); _messageQueueHelper = scope.Resolve <IMessageQueueHelper>(); _applicationConfig = scope.Resolve <IApplicationConfig>(); _queueDataModel = scope.Resolve <IQueueDataModel>(); _agentDataModel = scope.Resolve <IAgentDataModel>(); _chatHub = scope.Resolve <IChatHub>(); var chatMonitorHelper = new ChatMonitorHelper(_queueDataModel, _agentDataModel, _chatHub); var webserverHelper = new WebServerHelper(_applicationConfig); #endregion #region Processors //Start Message Queue Listener Task.Run(() => _messageQueueHelper.ReadMessages <QueueMetaData>(_applicationConfig, chatMonitorHelper.ProcessQueue)); //Start Message Queue Processor Task.Run(() => chatMonitorHelper.MonitorQueue()); //Start WebSocket Server Task.Run(() => webserverHelper.StartWebServer()); #endregion } Console.ReadLine(); }