Пример #1
0
        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);
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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()));
            }
        }