Рассмотрим архитектуру, состоящую из:
Models
: выполнять грубые операции с базой данных mysql Services
: содержать логику c и взаимодействовать с моделями Consumer
: получает сообщения от брокера сообщений, такого как RabbitMQ, и вызывает службы для выполнения соответствующих операций на основе сообщения
Когда Consumer
получает сообщение, Мне нужно выполнить несколько операций, вызвав несколько различных Services
, но мне нужно, чтобы они происходили внутри транзакции mysql, поскольку это «все или ничего».
Так что мое текущее решение, которого я на самом деле не знаю например, получить новое соединение из пула соединений mysql внутри Consumer
, запустить там транзакцию и затем передать объект соединения каждому методу Service
, который, в свою очередь, передаст соединение нужному Model
использовать.
Есть ли более чистый способ иметь своего рода контекст выполнения и избежать передачи соединения каждому методу службы?