Как получить версию события, добавленную в поток
Я пишу в поток EventStore с помощью API C# AppendDoStreamAsync(). Я вижу, что хотя это возвращает WriteResult, версия вновь добавленного события не возвращается. Я не могу полагаться на NextExpectedVersion, поскольку в этот поток потенциально могут писать несколько клиентов.
Я мог бы подписаться на поток и дождаться появления "моего" события, но если я что-то пропустил, документация довольно легкая и даже не упоминает возвращаемый тип.
Что считается лучшим способом получить этот номер?
1 ответ
Версия не нужна, потому что перед тем, как записать поток, вы знаете версию вашего агрегата (потока), поэтому, когда запись прошла успешно, вам известна версия.
Перед тем, как записать новое событие в поток, вы должны прочитать поток для повторной гидратации агрегата. Тогда вы знаете версию. Потому что, когда другой писатель записал в тот же поток, вы должны сначала иметь новое состояние. (Если у вас все еще есть агрегат в памяти, вы можете запросить текущую версию в вашем агрегате)
Если оптимистическая блокировка не нужна, вы можете указать ЛЮБУЮ версию при записи потока. (Это может быть сделано, когда поток является просто потоком регистрации)