示例#1
0
        public PluginHost()
        {
            XmlConfigurator.Configure();
            var sopWatch = Stopwatch.StartNew();

            log.Debug("Инициализация...");
            InitializeComponent();
            var rabbitmqConfig = RabbitmqConfigurationSection.GetConfiguration();

            processHostManager = new ProcessHostManager(rabbitmqConfig.HostName, rabbitmqConfig.UserName, rabbitmqConfig.Password);
            plugins            = new List <Plugin>();

            using (var dbContext = new OrationiDatabaseContext())
            {
                foreach (var requestCode in dbContext.RequestCodes)
                {
                    log.Debug($"Загрузка синхронного/асинхронного обработчиков для кода запроса \"{requestCode.Id}\"");
                    plugins.AddRange(new[] {
                        new Plugin
                        {
                            RequestCode = requestCode.Id,
                            IsSync      = true
                        },
                        new Plugin
                        {
                            RequestCode = requestCode.Id,
                            IsSync      = false
                        }
                    });
                }
            }
            sopWatch.Stop();
            log.Debug($"Инициализация выполнилась за {sopWatch.Elapsed.TotalSeconds} секунд");
        }
示例#2
0
        /// <summary>
        /// Process all plugins in DB.
        /// </summary>
        /// <param name="processHostManager">RabbitMQ Instance</param>
        private static void MultipleRequestCodesProcessing(ProcessHostManager processHostManager)
        {
            List <(int RequestCode, bool IsSync)> plugins = plugins = new List <(int RequestCode, bool IsSync)>();

            using (var dbContext = new OrationiDatabaseContext())
            {
                foreach (var requestCode in dbContext.RequestCodes)
                {
                    plugins.AddRange(new[] { (requestCode.Id, true), (requestCode.Id, false) });
示例#3
0
        /// <summary>
        /// Process single plugin. Method for debugging mostly.
        /// </summary>
        /// <param name="processHostManager">RabbitMQ Instance</param>
        /// <param name="requestCode">Reqeust code number to be processed</param>
        private static void SingleRequestCodeProcessing(ProcessHostManager processHostManager, int requestCode)
        {
            processHostManager.Add(requestCode, IsSync);

            Console.WriteLine($"Processing RequestCode {requestCode}");
            Console.WriteLine("Press [enter] to stop.");
            Console.ReadLine();

            processHostManager.Remove(requestCode, IsSync);
        }
示例#4
0
        static void Main(string[] args)
        {
            using (ProcessHostManager processHostManager = new ProcessHostManager("localhost", "orationi", "orationi"))
            {
                if (ShouldProcessSingleRequestCode)
                {
                    SingleRequestCodeProcessing(processHostManager, SingleProcessingRequestCode);
                }
                else
                {
                    MultipleRequestCodesProcessing(processHostManager);
                }

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }