Я очень новичок в концепциях CQRS и поиска событий, так что не будьте слишком тяжелыми (мой английский тоже не так хорош), так что извините, если есть какие -либо понимающие проблемы. Этот микросервис будет записан на Java с использованием Spring Boot. На данный момент у меня есть API REST с конечной точкой /регистром. Эта конечная точка имеет DTO с атрибутами «Электронная почта», «Имя пользователя» и «Пароль». Если какие -либо из этих атрибутов не являются уникальными, конечная точка вернет ошибку. < /P>
Пока что хорошо. Следующим методом, вызванным после проверки, является (асинхнологический) метод Grandle of RegisterUserCommandhandler . Этот метод предназначен для того, чтобы быть «огнем и забыть», поэтому, если в этом методе возникает ошибка, контроллер не узнает об этом.
Эта строка может бросить DataInteGrityViolationException Если данное имя пользователя или электронная почта не уникальны. Это исключение будет брошено только в том случае, если два запроса были отправлены в течение 2 секунд (когда приложение работает локально), потому что проверка в контроллере вернулась, что имя пользователя и электронная почта уникальны из -за условий гонки и разделения DB write (Event store) и чтения DB (Postgres db). Исключение было поймано в рамках функции, но не возвращалось к функции в контроллере, из -за принципа «Огнен и забыть». Спасибо заранее и хорошего дня!
Подробнее здесь:
https://stackoverflow.com/questions/795 ... -caused-by