Mysql транзакция между несколькими службами в Node.js - PullRequest
0 голосов
/ 28 марта 2020

Рассмотрим архитектуру, состоящую из:

  • Models: выполнять грубые операции с базой данных mysql
  • Services: содержать логику c и взаимодействовать с моделями
  • Consumer: получает сообщения от брокера сообщений, такого как RabbitMQ, и вызывает службы для выполнения соответствующих операций на основе сообщения

Когда Consumer получает сообщение, Мне нужно выполнить несколько операций, вызвав несколько различных Services, но мне нужно, чтобы они происходили внутри транзакции mysql, поскольку это «все или ничего».

Так что мое текущее решение, которого я на самом деле не знаю например, получить новое соединение из пула соединений mysql внутри Consumer, запустить там транзакцию и затем передать объект соединения каждому методу Service, который, в свою очередь, передаст соединение нужному Model использовать.

Есть ли более чистый способ иметь своего рода контекст выполнения и избежать передачи соединения каждому методу службы?

...