Итак, вот в чем проблема. Мы используем CQRS с Event Sourcing, и мы используем поток событий для каждой последовательности экземпляра агрегатного экземпляра. И каждый поток сохраняется с соответствующей датой создания, но дело в том, что все это происходит слишком быстро, а это означает, что некоторые из совокупных потоков событий, которые являются частью некоторого процесса (регистрации, уведомления и т. Д.), Выходят с той же самой датой. Поэтому, когда нам приходится переигрывать события, упорядочение потоков по дате создания не работает beacouse, есть потоки событий, которые зависят от времени, но они происходят так быстро, что похоже, что они были параллельными (это означает, что мы использовали DateTime.UtcNow и даты равны наносекунде).Что делать, если DateTime.Now не достаточно хорош?
Для тех, кто не знает, что CQRS или Event Sourcing является
Представьте себе, что у вас есть список ресурсов, и каждый элемент имеет свою дату создания. И его crutial, чтобы знать порядок создания предметов в Списке. Имейте в виду, что существует несколько потоков, создающих и добавляющих элементы в список. Проблема в том, что когда поток должен создавать и добавлять в список два элемента, даты их создания совпадают, и вы не можете упорядочить их по дате правильно. Btw pc имеет значение на моем компьютере DateTime.Now не равен DateTime.Now на сервере это. Фактически на коллеги pcadding 25000 раз DateTime.Now к списку приводит к тому, что первый и последний элементы списка равны наносекунде (точное совпадение)
Связанные: ['Что не так с DateTime в любом случае?'] (Http://noda-time.blogspot.com/2011/08/what-wrong-with-datetime-anyway.html) –
Почему использовать инкрементный идентификатор вместе со временем создания? – Anri
Сложный: DI пытается сделать это атм, но он борется –