Example #1
0
        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();
        }
Example #2
0
        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();
        }