public EventualConsistentWorker(
     IDependencyScope rootScope,
     EventHandlerRunnerCache eventHandlerRunnerCache,
     ILogger <EventualConsistentWorker> logger)
 {
     _rootScope = rootScope;
     _eventHandlerRunnerCache = eventHandlerRunnerCache;
     _logger = logger;
 }
示例#2
0
        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);
                }
            };
        }