public static void AddTask(ITask task, string name, TaskPosition type) { bool added = false; switch (type) { case TaskPosition.Before: added = TaskManager.AddBefore(task, name); break; case TaskPosition.After: added = TaskManager.AddAfter(task, name); break; case TaskPosition.Replace: added = TaskManager.Replace(name, task); break; default: GlobalLog.Error($"[BotStructure] Unknown task add type \"{type}\"."); break; } if (!added) { GlobalLog.Error($"[BotStructure] Fail to add \"{name}\"."); BotManager.Stop(); } }
public async Task StartAsync(CancellationToken cancellationToken) { //eventler arasından en son kayıt getirilir. var lastTaskContentPosition = await _taskPositionRepository.FindAsync("TaskContent"); var settings = new CatchUpSubscriptionSettings( maxLiveQueueSize: 10000, readBatchSize: 500, verboseLogging: false, resolveLinkTos: false, subscriptionName: "TaskContent"); //ilgili event store'a subscribe olup eventler dinlenir, verilen son position değeri ile tekrar tekrar proje ayağa kalktığında eventleri gezmesini engelledik. _subscription = _eventStoreConnection.SubscribeToAllFrom( lastCheckpoint: lastTaskContentPosition?.Position, settings: settings, eventAppeared: async(sub, @event) => { //Event Store’un kendine ait event‘leri ile ilgili işlem yapmamak için pas geçiyoruz. if (@event.OriginalEvent.EventType.StartsWith("$")) { return; } try { var eventType = Type.GetType(Encoding.UTF8.GetString(@event.OriginalEvent.Metadata)); var eventData = JsonSerializer.Deserialize(Encoding.UTF8.GetString(@event.OriginalEvent.Data), eventType); if (eventType != typeof(AssignTaskModel) && eventType != typeof(ChangeTaskStatusModel) && eventType != typeof(CreateTaskModel)) { return; } Save(eventData); var doc = new TaskPosition { Id = "TaskContent", Key = "TaskContent", Position = @event.OriginalPosition.GetValueOrDefault() }; await _taskPositionRepository.UpsertAsync(doc); } catch (Exception exception) { _logger.LogError(exception, exception.Message); } }); }
public override string ToString() { return("Attack: " + (TaskEntity != null ? TaskEntity.ToString() : TaskPosition.ToString(1))); }