public static void Stop() { // task details tábla szinkronizáció leállítása TableSync.Disable <T_TASKS_DETAILS>(); // task tábla szinkronizáció leállítása TableSync.Disable <T_TASKS>(); // task timer megállítása s_taskTimer?.Change(Timeout.Infinite, Timeout.Infinite); // megvárjuk míg végigfut a ciklikus task feladata s_taskTimer?.WaitToFinish(); s_taskTimer?.Dispose(); s_taskTimer = null; lock (s_activeTasks) { // egyéb taskok leállítása Parallel.ForEach(s_activeTasks, current => StopTask(current.Value)); // taskok törlése s_activeTasks.Clear(); } s_connectionProvider = null; MessageHandler.SendMessage(nameof(TaskManager), "Task vezérlés befejeződött", MessageHandler.MessageType.Info); }
protected void RegisterMainTables() { TableSync.RegisterTables(nameof(T_SETTINGS), nameof(T_TASKS), nameof(T_TASKS_DETAILS)); // speciális eseménykezelők hozzáadása TableSync.AddEventHandler(ConfigSync.SyncCallback, ConfigSync.DeleteFilter); TableSync.AddEventHandler <T_TASKS>(TaskManager.SyncCallbackTasks, null); TableSync.AddEventHandler(TaskManager.SyncCallbackTasksDetails, TaskManager.TaskDetailsDeleteFilter); }
public static void Start() { MessageHandler.SendMessage(nameof(TaskManager), "Task vezérlés kezdése", MessageHandler.MessageType.Info); IsActive = true; s_connectionProvider = new LXConnectionProvider(); // task tábla szinkronizáció engedélyezése TableSync.Enable <T_TASKS>(); // task details tábla szinkronizáció engedélyezése TableSync.Enable <T_TASKS_DETAILS>(); // task timer indítása a ciklikus taskokhoz s_taskTimer = new LXTimer(TimerCallBack, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)); }
private async Task <JobLog> RunJobInternal(PumperJobItem job, IDataPumperSource sourceProvider, IDataPumperTarget targetProvider, bool fullReloading) { Log.Warn($"Processing {job.Name}"); using (var ctx = new DataPumperContext(_configuration.MetadataConnectionString)) { var tableSync = await ctx.TableSyncs.FirstOrDefaultAsync(ts => ts.TableName == job.TargetTableName); if (tableSync == null) { tableSync = new TableSync { TableName = job.TargetTableName }; ctx.TableSyncs.Add(tableSync); } var jobLog = new JobLog { TableSync = tableSync }; ctx.Logs.Add(jobLog); await ctx.SaveChangesAsync(); try { var sw = new Stopwatch(); sw.Start(); targetProvider.Progress += UpdateJobLog; await targetProvider.RunQuery(job.PreRunQuery); if (fullReloading) { // При полной перезаливке обнуляем ActualDate tableSync.ActualDate = null; } var jobActualDate = tableSync.ActualDate; // Если переливка не выполнялась, то будет Null var onDate = jobActualDate ?? DateTime.Today.AddYears(-100); var currentDate = await sourceProvider.GetCurrentDate(_configuration.CurrentDateQuery) ?? DateTime.Now.Date; if (job.HistoricMode) { if (currentDate == tableSync.ActualDate) { onDate = tableSync.PreviousActualDate ?? DateTime.Today.AddYears(-100); } else { tableSync.PreviousActualDate = tableSync.ActualDate; } } var records = await _pumper.Pump(sourceProvider, targetProvider, new PumpParameters( new TableName(job.SourceTableName), new TableName(job.TargetTableName), _configuration.ActualityColumnName, _configuration.HistoricColumnFrom, _configuration.TenantField, onDate.AddDays(_configuration.BackwardReloadDays), job.HistoricMode, currentDate, fullReloading, _tenantCodes) { DeleteProtectionDate = _configuration.DeleteProtectionDate }); tableSync.ActualDate = currentDate; jobLog.EndDate = DateTime.Now; jobLog.RecordsProcessed = records; jobLog.Status = SyncStatus.Success; await targetProvider.RunQuery(job.PostRunQuery); sw.Stop(); } catch (Exception ex) { Log.Error($"Error processing job {job}", ex); jobLog.Message = ex.Message; jobLog.Status = SyncStatus.Error; } await ctx.SaveChangesAsync(); return(jobLog); } }
/// <summary> /// Event figyelés leállítása /// </summary> public static void Stop() => TableSync.Disable <T_SETTINGS>();
/// <summary> /// Event figyelés indítása /// </summary> public static void Start() { TableSync.Enable <T_SETTINGS>(); }