Я приведу пример с optimistic lock. Классический пример списание денег. Подписчику приходит событие из кафки КулпенТовар(IDТовара, Сумма). Допустим мы берем проекцию аграгата/стрима/актора баланса клиента из кафки, смотрим на баланс и уменьшаем его, если не уйдет в минус. При конкрентном вычислении, оба потока обработчика получат один и тот же снапшот, кто то добавит в кафку ивент СписаноСБаланса первым, а второй все еще будет ориентироваться на уже устаревший снапшот и будет lost update problem. Я думаю вы прекрасно занаете эту проблему, я просто описал кейс для примера. Как это разрешить, если сделать кафку ивент хранилишем для ивент сорсинга?
Я так понимаю ответ может быть: делать один поток на один стрим/агрегат, получится однопоточная обработка, только в таком случае “ну нужны локи” То есть по сути это будут пессимистичные локи на уровне обработчика