Внешняя проверка контрагента отвечает от 30 секунд до 2 минут
Для открытия счёта нужно проверить контрагента во внешнем сервисе. По регламенту поставщика ответ приходит от 30 секунд до 2 минут, иногда дольше. Сейчас интеграция синхронная: наш сервис вызывает метод и держит соединение до ответа, а пользователь смотрит на крутящийся индикатор.
Как спроектировать взаимодействие?
- Вызывать внешний сервис синхронно, но с коротким таймаутом, и при его истечении считать контрагента непроверенным, продолжая оформление счёта
- Оставить синхронный вызов, увеличив таймауты на всех промежуточных узлах и показав пользователю сообщение об ожидании с оценкой оставшегося времени, чтобы он не закрывал вкладку и не отправлял заявку повторно
- Запрашивать проверку заранее по всем контрагентам из справочника раз в сутки и складывать результаты в свою базу, а при оформлении счёта брать последний известный результат из неё
- Сделать проверку асинхронной: наш сервис принимает заявку и сразу подтверждает приём, результат приходит коллбэком или опросом статуса, а в требованиях описываются повторы, дубли коллбэков и предельный срок ожидания
