public void Commit(Guid transactionId)
        {
            var eventsToEmit = new List <Event>();

            foreach (Aggregate aggregate in Queue)
            {
                eventsToEmit.AddRange(aggregate.GetUncommittedEvents());
                SaveAggregate(aggregate, transactionId);
            }

            eventEmitter.EmitEvents(eventsToEmit);

            Queue = new ConcurrentQueue <Aggregate>(); //https://social.msdn.microsoft.com/Forums/en-US/accf4254-ee81-4059-9251-619bc6bbeadf/clear-a-concurrentqueue?forum=rx
        }