Создать транзакцию, например, использовать администрирование контейнера EJB - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть код в моем бизнес-уровне, который обновляет данные в базе данных, а также в службе отдыха.

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

Итак, я ищу способ использовать управление транзакциями EJB для организации вызовов к API.Во время фиксации отправьте заданную заявку в api, а во время отката отправьте заявку на удаление в api.

Фактически мне необходимо поддерживать согласованность и синхронизировать оба места.

IЯ читал о UserTransactions и управляемых компонентах, но я понятия не имею, как лучше всего это сделать.

1 Ответ

0 голосов
/ 04 декабря 2018

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

Это не будет работать со слабосвязанными компонентами, и ваша установка выглядит следующим образом.

Я не рекомендую создавать собственный протокол распределенных транзакций.Что касается краевых и угловых случаев, вы, вероятно, не получите в итоге согласованные данные.

Я бы посоветовал подумать об использовании источников событий и, в конечном итоге, согласованности для подобных вещей.Например, вы можете создать событие (команду) для записи данных.Если ваш «откат» необходим, вы можете отправить событие (команду), чтобы удалить дату, написанную ранее.После обработки всех событий данные становятся согласованными.

Некоторые интересные ссылки могут быть следующими:

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