private async Task HandleEventAsync(IEventConsumer eventConsumer, StoredEvent storedEvent, string consumerName) { var @event = ParseEvent(storedEvent); if (@event == null) { return; } await DispatchConsumer(@event, eventConsumer); await eventConsumerInfoRepository.SetLastHandledEventNumberAsync(consumerName, storedEvent.EventNumber); }
private async Task ResetAsync() { var consumerName = eventConsumer.Name; var actionId = Guid.NewGuid().ToString(); try { log.LogInformation(w => w .WriteProperty("action", "EventConsumerReset") .WriteProperty("actionId", actionId) .WriteProperty("state", "Started") .WriteProperty("eventConsumer", consumerName)); await eventConsumer.ClearAsync(); await eventConsumerInfoRepository.SetLastHandledEventNumberAsync(consumerName, -1); log.LogInformation(w => w .WriteProperty("action", "EventConsumerReset") .WriteProperty("actionId", actionId) .WriteProperty("state", "Completed") .WriteProperty("eventConsumer", consumerName)); OnReset?.Invoke(); } catch (Exception ex) { log.LogFatal(ex, w => w .WriteProperty("action", "EventConsumerReset") .WriteProperty("actionId", actionId) .WriteProperty("state", "Completed") .WriteProperty("eventConsumer", consumerName)); } }
private async Task HandleAsync(Envelope <IEvent> input) { var eventNumber = input.Headers.EventNumber(); if (eventNumber <= lastReceivedEventNumber || !isRunning) { return; } try { await eventConsumerInfoRepository.SetLastHandledEventNumberAsync(eventConsumer.Name, eventNumber); } catch (Exception ex) { OnError?.Invoke(ex); log.LogFatal(ex, w => w .WriteProperty("action", "UpdateState") .WriteProperty("state", "Failed") .WriteProperty("eventId", input.Headers.EventId().ToString()) .WriteProperty("eventNumber", input.Headers.EventNumber())); } }