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} секунд"); }
/// <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) });
/// <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); }
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(); } }