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