Beispiel #1
0
        public void Dispatch(IEnumerable <DomainEvent> events)
        {
            if (events == null)
            {
                throw new ArgumentNullException("events");
            }
            var list = events.ToList();

            if (!list.Any())
            {
                return;
            }

            var maxSequenceNumberInBatch = list.Max(e => e.GetGlobalSequenceNumber());

            Interlocked.Exchange(ref _sequenceNumberToCatchUpTo, maxSequenceNumberInBatch);

            _work.Enqueue(PieceOfWork.JustCatchUp(list));
        }