Как выполнить откат на микро-сервисе, если некоторые http-запросы успешны, а некоторые http-запросы не выполнены, с помощью jdbcTemplate - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть проекты весенней загрузки, построенные на микро-сервисе, и я использую KONG в качестве api-шлюза. Все услуги находятся в Docker контейнере .

В моей ситуации я использую цикл serviceA 20 раз, чтобы запросить удаление записей в serviceB с помощью jdbcTemplate . Первые 10 запросов успешны. Таким образом, 10 записей удаляются из базы данных postgresql в serviceB . Но 11-й запрос - ошибка. Поэтому я хотел бы откатить все 10 записей, которые были успешно удалены из базы данных.

У меня вопрос: могу ли я откатиться в этой ситуации? Если есть возможность откатить, как мне это сделать? и какую технологию мне использовать? Могу ли я использовать Spring Cloud Stream и Kafka в этой ситуации для отката?

1 Ответ

0 голосов
/ 05 ноября 2018

Одним из вариантов является использование распределенных транзакций, что является довольно сложным подходом ...

Кроме того, что вы можете изменить архитектуру, что тоже не идеальный совет.

Переходя к реальным советам.

Общий вопрос здесь, если это единственный, проблемный случай. Если это так - это довольно просто - расширяйте свой API таким образом, чтобы можно было удалять несколько объектов за одну операцию. Пожалуйста, посмотрите на Oracle / Scim API . Таким образом, изменение одной группы является атомарным. Проблема начинается, когда кто-то собирается переместить пользователя из одной группы в другую. Так что, может быть, вы можете справиться с проблемными случаями, добавив специальный метод - как представлено patch?

Другое, чем все это. Вы можете использовать command шаблон проектирования и иметь возврат для каждой операции. Это все еще сложно, поскольку не все варианты возможны, но это сильно зависит от вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...