Нещодавно завершено проект по обробці кредитних карт. Однією з труднощів, з якими я стикався, було обробляти затримку / можливу невдачу повідомлень про сповіщення. Найскладнішим прикладом було:
- зовнішня система, що надсилає запит на оплату
- моя система перетворює цей запит у запит до шлюзу платежів
- відправлення користувача на шлюз
- чекає, коли користувач здійснить оплату
- користувач повертається назад до моєї системи, але його тримають, поки система не отримає повідомлення про успіх / збій
- Відправлення користувача назад до зовнішньої системи залежно від відмови
Ще складніше було те, що при відмові надсилання повідомлення шлюз намагається надсилати сповіщення кожні 15 хвилин протягом декількох годин.
Я вирішив це за допомогою запису бази даних про відкладені транзакції, а потім виявлення успіху та відмови від повернення, а також слухача з тимчасовою затримкою для оповіщення та обробки транзакцій ...
Розумно важко!
Але це, мабуть, вирішувалося вже газильйон разів, тож яка найкраща практика?
Я бачу, що моє майбутнє буде писати обробку між усіма цими системами та керувати тимчасовими затримками та можливими відмовами мережі, тому я хочу дотримуватися кращих практик.
Рекомендації з книги / статті були б чудовими.
Спасибі заздалегідь!