Задать вопрос
Tokishu
@Tokishu
А как?

Как правильно в EventDriven?

У пеня возник вопрос по event driven архитектуре, я пока изучаю только теорию дабы понять как написать тестовое приложение.

И возник вопрос: А если синхрон обязателен?
У меня есть эндпоинт регистрации, клиент отправил туда запрос, и сервис авторизации создал у себя запись с данными авторизации (authRepo), после чего отправил ивент «зарегистрирован пользователь», и обязательно нужно чтобы был создан публичный профиль пользователя, тут возникает вопрос, а что если мне нужно обязательно убедиться что профиль создан? Ибо мне нужно отдать куку пользователю, и если сервис который занимается публичными профилями запнулся или вовсе крашнулся, то пользователь не сможет попасть в профиль, но и зарегаться снова не сможет, он уже зареган.

Как решать подобные ситуации?
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Во-первых, все части регистрации должны быть в одной распределённой транзакции, пока она полностью не завершилась, пользователь не зарегистрирован. Во-вторых, событийные системы обычно опираются на согласованность в конечном счёте, если сервис профилей крашнулся, то ничего страшного, после подъёма он снова попытается обработать команду создания профиля.
Ответ написан
Комментировать
Daemon23RUS
@Daemon23RUS
то пользователь не сможет попасть в профиль, но и зарегаться снова не сможет, он уже зареган.

Нет проблемы, если сервис который занимается публичными профилями запнулся или вовсе крашнулся, то профиль не создан, т.е пользователь не зареган по факту. В куке у Вас грубо говоря обещание, что по ней будет профиль - нет по куке профиля - дестроите куку. Можете что то пользователю сообщить по этому поводу (если есть что)
ну и как следствие предлагаете залогинится или попытаться зарегатся снова.
Тут конечно есть варианты, ибо если у Вас возникла такая ситуация (краш сервиса создания профиля) Вы можете тригернуть повторное событие (иветн). Инициатор - пользователь с регой (кукой) но без профиля. Ну и пользователю уведомление ... подождите, профиль создается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы