Можно ли выполнять запись в два разных потока (учетная запись A и учетная запись B) в одной транзакции с использованием EventStore?
Начиная с V5 RC1 (декабрь 2018 г.), я не могу найти никаких доказательств того, что Event Store поддерживает скоординированную запись в несколько потоков событий.
Предполагается, что ваша модель данных вернаи что две учетные записи действительно принадлежат разным потокам: это означает, что у вас нет жесткой границы транзакции для управления, но есть процесс.
Аналогия: рассмотрите банковский перевод - вы думаете, что мы переедемденьги со счета в Bank of America на счет в Wells Fargo в одной транзакции?
Более обычным подходом было бы управление процессом перевода в отдельном потоке, который отслеживает всеэто случилось.Изменения в учетных записях по-прежнему происходят в их собственных потоках, изолированно друг от друга.Поток процесса отвечает за оркестровку - проверку подтверждений от других элементов.
Счастливый путь потока может выглядеть примерно так:
- Запишите запрос на передачу вПоток процесса
- Запись снятия средств со счета. Поток
- Запись подтверждения вывода средств в потоке процесса.
- Запись пополнения счета.в потоке счета B
- Запись подтверждения депонирования средств в потоке процесса
- Запись завершения процесса в потоке процесса
Но если вам действительно нужно изменить две учетные записи одновременно , то вам нужно, чтобы они управлялись одним и тем же грубозернистым замком .Поскольку хранилище событий гарантирует блокировку только на уровне потока, вам потребуется переоценить модель данных.