Задать вопрос
@nioterzor

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

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

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

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

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

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

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

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

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

Похожие вопросы