/// <inheritdoc/> public IStreamProcessor Create( ConsentId consent, SubscriptionId subscription, ExecutionContext executionContext, EventsFromEventHorizonFetcher eventsFromEventHorizonFetcher) => new StreamProcessor( subscription, executionContext, new EventProcessor( consent, subscription, _externalEventsCommitter, _metrics, _loggerFactory.CreateLogger <EventProcessor>()), eventsFromEventHorizonFetcher, _streamProcessorStates, _eventsFetcherPolicy, _metrics, _loggerFactory);
/// <summary> /// Initializes a new instance of the <see cref="StreamProcessor"/> class. /// </summary> /// <param name="subscriptionId">The identifier of the subscription the stream processor will receive events for.</param> /// <param name="executionContext">The <see cref="ExecutionContext"/>.</param> /// <param name="eventProcessor">The event processor that writes the received events to a scoped event log.</param> /// <param name="eventsFetcher">The event fetcher that receives fetches events over an event horizon connection.</param> /// <param name="streamProcessorStates">The repository to use for getting the subscription state.</param> /// <param name="eventsFetcherPolicy">The policy around fetching events.</param> /// <param name="metrics">The system for collecting metrics.</param> /// <param name="loggerFactory">The factory for creating loggers.</param> public StreamProcessor( SubscriptionId subscriptionId, ExecutionContext executionContext, IEventProcessor eventProcessor, EventsFromEventHorizonFetcher eventsFetcher, IResilientStreamProcessorStateRepository streamProcessorStates, IEventFetcherPolicies eventsFetcherPolicy, IMetricsCollector metrics, ILoggerFactory loggerFactory) { _identifier = subscriptionId; _executionContext = executionContext; _eventProcessor = eventProcessor; _streamProcessorStates = streamProcessorStates; _eventsFetcher = eventsFetcher; _eventsFetcherPolicy = eventsFetcherPolicy; _metrics = metrics; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger <StreamProcessor>(); }
/// <summary> /// Initializes a new instance of the <see cref="Subscription"/> class. /// </summary> /// <param name="consentId">The <see cref="ConsentId" />.</param> /// <param name="subscriptionId">The <see cref="StreamProcessorId" />.</param> /// <param name="eventProcessor">The <see cref="IEventProcessor" />.</param> /// <param name="eventsFetcher">The <see cref="EventsFromEventHorizonFetcher" />.</param> /// <param name="streamProcessorStates">The <see cref="IResilientStreamProcessorStateRepository" />.</param> /// <param name="unregister">An <see cref="Action" /> that unregisters the <see cref="ScopedStreamProcessor" />.</param> /// <param name="eventsFetcherPolicy">The <see cref="IAsyncPolicyFor{T}" /> <see cref="ICanFetchEventsFromStream" />.</param> /// <param name="loggerManager">The <see cref="ILoggerManager" />.</param> /// <param name="cancellationToken">The <see cref="CancellationToken" />.</param> public Subscription( ConsentId consentId, SubscriptionId subscriptionId, EventProcessor eventProcessor, EventsFromEventHorizonFetcher eventsFetcher, IResilientStreamProcessorStateRepository streamProcessorStates, Action unregister, IAsyncPolicyFor <ICanFetchEventsFromStream> eventsFetcherPolicy, ILoggerManager loggerManager, CancellationToken cancellationToken) { _identifier = subscriptionId; _eventProcessor = eventProcessor; _unregister = unregister; _streamProcessorStates = streamProcessorStates; _eventsFetcher = eventsFetcher; _eventsFetcherPolicy = eventsFetcherPolicy; _loggerManager = loggerManager; _logger = loggerManager.CreateLogger <StreamProcessor>(); _cancellationToken = cancellationToken; _unregisterTokenRegistration = _cancellationToken.Register(_unregister); ConsentId = consentId; }