Недавно завершен проект по обработке кредитных карт. Одна из трудностей, с которыми я столкнулся, была обработка задержки / возможного сбоя уведомительных сообщений. Самый сложный пример был:
- внешняя система, отправляющая запрос на оплату
- моя система превратила этот запрос в запрос к платежному шлюзу
- отправка пользователя на шлюз
- ждет, пока пользователь выполнит платеж
- пользователь возвращается в мою систему, но удерживается до тех пор, пока система не получит уведомление об успехе / сбое
- Отправка пользователя обратно во внешнюю систему в зависимости от сбоя
Еще более сложным был тот факт, что при неудачной отправке уведомления шлюз пытается отправлять уведомление каждые 15 минут в течение нескольких часов.
Я решил это, используя запись в базе данных ожидающих транзакций, а затем обнаруживая успех и неудачу по возврату плюс прослушиватель с временной задержкой для уведомлений и обработки транзакций ...
Достаточно сложно!
Но это, должно быть, было решено несколько миллионов раз, так какова лучшая практика?
Я вижу, что мое будущее будет заключаться в том, чтобы писать обработку между всеми этими системами и управлять временными задержками и возможными сбоями в сети, поэтому я хочу следовать передовым методам.
Рекомендации по книге / статье были бы отличными.
Заранее спасибо!