public EventualConsistentWorker( IDependencyScope rootScope, EventHandlerRunnerCache eventHandlerRunnerCache, ILogger <EventualConsistentWorker> logger) { _rootScope = rootScope; _eventHandlerRunnerCache = eventHandlerRunnerCache; _logger = logger; }
readonly Queue <EventualConsistentEvent> _eventualConsistentEvents = new Queue <EventualConsistentEvent>(); // TODO: lazy? public EventDispatcher( EventualConsistentWorker eventualConsistentWorker, IUnitOfWork unitOfWork, IEventRepository repository, EventHandlerRunnerCache cache, IDependencyScope rootScope, ILogger <EventDispatcher> logger) { _eventualConsistentWorker = eventualConsistentWorker; _repository = repository; _cache = cache; _rootScope = rootScope; _logger = logger; unitOfWork.Commited += uow => { while (_eventualConsistentEvents.Count != 0) { var eventualConsistent = _eventualConsistentEvents.Dequeue(); _eventualConsistentWorker.Process(eventualConsistent); } }; }