Почему стойкость SQL для EventStore @Jonathan Oliver использует CommitSequence
как один из критериев для обнаружения дублирующего коммита? Почему бы не было StreamId
и CommitId
?EventStore DuplicateCommit Query
См. SQL ниже.
SELECT COUNT(*)
FROM Commits
WHERE StreamId = @StreamId
AND CommitSequence = @CommitSequence
AND CommitId = @CommitId
Этот оператор SQL от SqlPersistenceEngine.DetectDuplicate()
. Он используется для определения того, нужно ли бросать DuplicateCommitException
или просто ConcurrencyException
.
Спасибо за ваш вклад Рубен. Вышеуказанный SQL-оператор относится к SqlPersistenceEngine.DetectDuplicate. Этот оператор используется для определения того, нужно ли вызывать DuplicateCommitException или просто исключение ConcurrencyException. Мне кажется, что различие - это обнаружение дублирования обработки сообщений против одновременных сводных изменений. Но если это так, я не понимаю, почему CommitSequence является частью запроса. Мои идентификаторы транзакций поступают из моих сообщений. – Joe
@ Joe гораздо лучше сейчас. Если это одна и та же фиксация, ее можно сбросить на пол. Если это не так, то перехват разрешения конфликтов в общем домене позволяет решить, основываясь на настраиваемой стратегии по вашему выбору, являются ли они эквивалентными, прежде чем принимать решение об откате или нет. Это принцип, но, честно говоря, я никогда не реализовывал такую часть управления конфликтами, поэтому я больше не буду осмеливаться объяснять, почему именно ** именно так. Надеюсь, у кого-то есть ответ от уст лошади для вас скоро! –