public RebuildProjectionEngine( EventUnwinder eventUnwinder, IConcurrentCheckpointTracker checkpointTracker, IProjection[] projections, IRebuildContext rebuildContext, ProjectionEngineConfig config, ProjectionEventInspector projectionInspector, ILoggerThreadContextManager loggerThreadContextManager) { _eventUnwinder = eventUnwinder; _checkpointTracker = checkpointTracker; _rebuildContext = rebuildContext; _config = config; _projectionInspector = projectionInspector; if (_config.Slots[0] != "*") { projections = projections .Where(x => _config.Slots.Any(y => y == x.Info.SlotName)) .ToArray(); } _allProjections = projections; _projectionsBySlot = projections .GroupBy(x => x.Info.SlotName) .ToDictionary(x => x.Key, x => x.OrderByDescending(p => p.Priority).ToArray()); _metrics = new ProjectionMetrics(_allProjections); _loggerThreadContextManager = loggerThreadContextManager; HealthChecks.RegisterHealthCheck("RebuildProjectionEngine", (Func <HealthCheckResult>)HealthCheck); }
public RebuildProjectionEngine( EventUnwinder eventUnwinder, IConcurrentCheckpointTracker checkpointTracker, IProjection[] projections, IRebuildContext rebuildContext, ProjectionEngineConfig config, ProjectionEventInspector projectionInspector) { _eventUnwinder = eventUnwinder; _checkpointTracker = checkpointTracker; _rebuildContext = rebuildContext; _config = config; _projectionInspector = projectionInspector; if (_config.Slots[0] != "*") { projections = projections .Where(x => _config.Slots.Any(y => y == x.GetSlotName())) .ToArray(); } _allProjections = projections; _projectionsBySlot = projections .GroupBy(x => x.GetSlotName()) .ToDictionary(x => x.Key, x => x.OrderByDescending(p => p.Priority).ToArray()); _metrics = new ProjectionMetrics(_allProjections); }
public ConcurrentProjectionsEngine( IConcurrentCheckpointTracker checkpointTracker, IProjection[] projections, IPollingClient client, IHousekeeper housekeeper, IRebuildContext rebuildContext, INotifyCommitHandled notifyCommitHandled, ProjectionEngineConfig config) { _checkpointTracker = checkpointTracker; _client = client; _housekeeper = housekeeper; _rebuildContext = rebuildContext; _notifyCommitHandled = notifyCommitHandled; _config = config; if (_config.Slots[0] != "*") { projections = projections .Where(x => _config.Slots.Any(y => y == x.GetSlotName())) .ToArray(); } _allProjections = projections; _projectionsBySlot = projections .GroupBy(x => x.GetSlotName()) .ToDictionary(x => x.Key, x => x.OrderByDescending(p => p.Priority).ToArray()); _metrics = new ProjectionMetrics(_allProjections); }
public ProjectionEngine( Func <IPersistStreams, CommitPollingClient> pollingClientFactory, IConcurrentCheckpointTracker checkpointTracker, IProjection[] projections, IHousekeeper housekeeper, IRebuildContext rebuildContext, INotifyCommitHandled notifyCommitHandled, ProjectionEngineConfig config) { _pollingClientFactory = pollingClientFactory; _checkpointTracker = checkpointTracker; _housekeeper = housekeeper; _rebuildContext = rebuildContext; _notifyCommitHandled = notifyCommitHandled; _config = config; if (_config.Slots[0] != "*") { projections = projections .Where(x => _config.Slots.Any(y => y == x.GetSlotName())) .ToArray(); } _allProjections = projections; _projectionsBySlot = projections .GroupBy(x => x.GetSlotName()) .ToDictionary(x => x.Key, x => x.OrderByDescending(p => p.Priority).ToArray()); _metrics = new ProjectionMetrics(_allProjections); _clients = new List <CommitPollingClient>(); _bucketToClient = new Dictionary <BucketInfo, CommitPollingClient>(); }
/// <summary> /// TODO: We should pass a dictionary where we have the last dispatched /// checkpoint for EACH projection. /// </summary> /// <param name="logger"></param> /// <param name="slotName"></param> /// <param name="config"></param> /// <param name="projections"></param> /// <param name="lastCheckpointDispatched"></param> /// <param name="loggerThreadContextManager"></param> public RebuildProjectionSlotDispatcher( ILogger logger, String slotName, ProjectionEngineConfig config, IEnumerable <IProjection> projections, Int64 lastCheckpointDispatched, ILoggerThreadContextManager loggerThreadContextManager) { SlotName = slotName; _logger = logger; _config = config; _projections = projections; _metrics = new ProjectionMetrics(projections); _maxCheckpointDispatched = lastCheckpointDispatched; _lastCheckpointRebuilded = 0; _loggerThreadContextManager = loggerThreadContextManager; }
public RebuildProjectionSlotDispatcher( IExtendedLogger logger, String slotName, ProjectionEngineConfig config, IEnumerable <IProjection> projections, IConcurrentCheckpointTracker checkpointTracker, Int64 lastCheckpointDispatched) { SlotName = slotName; _logger = logger; _config = config; _projections = projections; _metrics = new ProjectionMetrics(projections); _checkpointTracker = checkpointTracker; _maxCheckpointDispatched = lastCheckpointDispatched; _lastCheckpointRebuilded = 0; }
public ProjectionEngine( ICommitPollingClientFactory pollingClientFactory, IConcurrentCheckpointTracker checkpointTracker, IProjection[] projections, IHousekeeper housekeeper, IRebuildContext rebuildContext, INotifyCommitHandled notifyCommitHandled, ProjectionEngineConfig config) { Logger = NullLogger.Instance; _engineFatalErrors = new ConcurrentBag <string>(); _pollingClientFactory = pollingClientFactory; _checkpointTracker = checkpointTracker; _housekeeper = housekeeper; _rebuildContext = rebuildContext; _notifyCommitHandled = notifyCommitHandled; _config = config; if (_config.Slots[0] != "*") { projections = projections .Where(x => _config.Slots.Any(y => y == x.GetSlotName())) .ToArray(); } _allProjections = projections; _projectionsBySlot = projections .GroupBy(x => x.GetSlotName()) .ToDictionary(x => x.Key, x => x.OrderByDescending(p => p.Priority).ToArray()); _metrics = new ProjectionMetrics(_allProjections); _bucketToClient = new Dictionary <BucketInfo, ICommitPollingClient>(); RegisterHealthCheck(); }