Как исключить создание дубликатов при запросе RabbitMQ?
У меня RabbitMQ отправляет запросы по микросервисам (gateway).
К примеру микросервис регистрации, неотвечает и клиент отправил 10 запросов на регистрацию с одним и тем же EMail адресом. Проверка на занятость EMail есть, но запросы асинхронно срабатывают, и в итоге проверку проходят.
Как только микросервис становится доступным, RabbitMQ проталкивает эти 10 запросов, в итоге в базу записывается 10 дубликатов.
Как с этим бороться?
И так сделал поле UNIQUE, но мне кажется это должно работать и без этого. Создаётся ощущение что в других случаях, к примеру без поля UNIQUE (где нет уникальных полей, где они не нужны), будут дубликаты, я об этом.
Андрей Рудаков, я как раз про архитектуру и говорю.
У вас есть основной микросервис регистрации, ну и к примеру куча других микросервисов, например рассылка, биллинг и т.д.
Когда пользователь регистрируется, то его данные обрабатываются через прокси сервисом регистрации.
Как только регистрация успешна, т.е. запись создана, тогда в рабит уходит сообщение с инфой пользователя.
При таком раскладе повторная регистрация просто не произойдет, т.к. insert выкинет исключение.