Могут ли несколько вызовов REST участвовать в распределенной транзакции?

Вот сценарий и, кстати, я ищу Java-ориентированный ответ.

  1. Код клиента вызывает REST Service A (POST) из приложения провайдера № 1.
  2. Код клиента напрямую обновляет внутреннюю базу данных с использованием JDBC.
  3. Код клиента вызывает REST Service B (POST) из приложения провайдера № 2.
  4. Шаги 1–3 должны выполняться в распределенной транзакции с поддержкой двухфазной фиксации, т. Е. Если обновление базы данных шага 2 завершится неудачно, мы хотим отменить POST шага 1. Если POST шага 3 завершается неудачно, мы хотим отменить POST шага 1 и обновление базы данных шага 2.

Есть ли способ, которым мы можем сделать это, используя JTA без написания собственного кода компенсации (чтобы отменить шаги 1 и 2)?

1 ответ

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

Таким образом, в этом случае - если ваши REST-сервисы поддерживают два метода, эквивалентных двум этапам транзакции - вы могли бы внедрить менеджер транзакций в своем клиенте.

Другие вопросы по тегам