Есть сервис1, действия которого обернуты в транзакцию.
Есть сервис2, действия которого обернуты в транзакцию.
Есть сервис3, который должен использовать 1 и 2, при этом нужна одна общая транзакция.
Как в таких случаях поступают?
В моем понимании: из сервис1 и сервис2 убираются транзакции, создаются сервис1_with_transactions, сервис2_with_transactions и вместо сервис1 используется сервис1_with_transactions, аналогично для 2-го.
Сервис3 при этом использует 1 и 2.
Повторяю, вопрос чисто теоретический, мне сходу не удалось придумать реальные use cases.
Если сервис 1 и сервис 2 должны юзаться еще где-то, имеет смысл вынести их функциональность либо полностью отдельно, без транзакций, либо частично в публичный метод. В 3-ем юзать одну транзакцию.
Если так не делать - работа с событиями после flush, и ему подобными становится как минимум сложной.