@nioterzor

Использование транзакций в сервисах?

Вопрос теоретический.

Есть сервис1, действия которого обернуты в транзакцию.
Есть сервис2, действия которого обернуты в транзакцию.
Есть сервис3, который должен использовать 1 и 2, при этом нужна одна общая транзакция.

Как в таких случаях поступают?

В моем понимании: из сервис1 и сервис2 убираются транзакции, создаются сервис1_with_transactions, сервис2_with_transactions и вместо сервис1 используется сервис1_with_transactions, аналогично для 2-го.

Сервис3 при этом использует 1 и 2.

Повторяю, вопрос чисто теоретический, мне сходу не удалось придумать реальные use cases.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
@vanillathunder
Мухи отдельно, котлеты отдельно. Логику нужно хранить в одних методах, транзакции с вызовом логики в другом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Если сервис 1 и сервис 2 должны юзаться еще где-то, имеет смысл вынести их функциональность либо полностью отдельно, без транзакций, либо частично в публичный метод. В 3-ем юзать одну транзакцию.

Если так не делать - работа с событиями после flush, и ему подобными становится как минимум сложной.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы