Я не знаю, что хранилище событий не использует транзакции.Я видел записи транзакций, чтобы гарантировать, что ожидаемая версия события записывается.
Если вы ожидаете хотя бы раз доставки, что, как я полагаю, есть, то вы должны справиться с дедупликацией.Иногда рекомендуется поддерживать индекс всех обработанных сообщений в качестве метода дедупликации, но это не совсем безопасно, поскольку вы просто минимизируете часть кода, в которой можно создать дубликат, но не исключаете возможность вообще,Если вы обрабатываете сообщение, но не обновляете индекс, то вы снова обработаете то же сообщение.Вместо этого вы должны сделать все свои действия идемпотентными.То есть выполнение одного и того же действия дважды приведет к одинаковому результирующему состоянию.Если вы обрабатываете одно и то же сообщение дважды, оно должно обновлять состояние только один раз.