У меня есть служба с интеграцией внешних служб 3.party.
Моя служба делает что-то в моей базе данных.
Если в моей службе возникает исключение, то я не вызываю службу 3.party Это нормально.
Но если служба 3.party создает исключение. Я уже выполнил операции над своей базой данных!
Для решения этой проблемы я изменил дизайн сервиса для использования БД. Все операции с БД начинаются с Транзакции, и я жду, пока не проверит ответ службы 3.party. И затем я фиксирую эту транзакцию или откат для отмены локальных изменений. Это легко, но.
При транзакционной операции я блокирую ресурсы до конца sh ответа службы 3.party. Я думаю, что этот дизайн значительно влияет на производительность сервиса. Один вызов ожидает другого вызова до тех пор, пока последняя транзакция не завершится sh или не произойдет откат.
Есть ли у вас передовые знания в этой области?
Мое решение Использовать операции базы данных без транзакций И если 3.party вызов создает исключение. Вызовите другую операцию базы данных для возврата к старым значениям базы данных. Это немного сложно, поэтому найдите, какие таблицы действуют, какие изменения работают и т. Д. c .. Так скучно.
Но я вижу, что есть только один путь. Или я пропустил какую-то часть: / Спасибо.
- Точка обслуживания
- Создание транзакции
- Операции с локальной базой данных
- Вызов службы интеграции 3.party (ожидание) Потерянное время здесь и блокировка транзакции все еще существует
- Фиксация или откат транзакции