private ReplayEventsResponse ReplayEvents(ReplayEventsCommand command) { try { var criteria = new LogEntryCriteria { EventType = command.EventType, RoutingKey = command.RoutingKey, FromTimestamp = command.FromTimestamp, ToTimestamp = command.ToTimestamp }; var logEntries = _repository.FindBy(criteria).ToList(); _logger.LogTrace($"Found {logEntries.Count} log entries"); logEntries = logEntries .Where(entry => _routingKeyMatcher.IsMatch(criteria.RoutingKey, entry.RoutingKey)).ToList(); _logger.LogTrace($"Filtered log entries, which results in {logEntries.Count} log entries"); _eventReplayer.RegisterReplayExchange(command.ReplayExchangeName); _eventReplayer.ReplayLogEntries(logEntries); _logger.LogTrace($"Replayed {logEntries.Count} log entries"); } catch (Exception exception) { _logger.LogError($"Internal error occured, with exception: {exception.Message}"); return(new ReplayEventsResponse { Code = StatusCodes.Status500InternalServerError, Status = "Internal Error" }); } _logger.LogTrace("Sending response"); return(new ReplayEventsResponse { Code = StatusCodes.Status200OK, Status = "OK" }); }