Я хочу использовать транзакцию mon goose на своих сервисах. Но я не знаю, как я могу использовать на микросервисной многоуровневой архитектуре. У меня есть сервисный уровень, уровень доступа к данным и такая модель.
У меня есть logService, и я веду журнал после перемещения продукта. Если во время регистрации в logServiceCaller возникает ошибка, я хочу выполнить откат для отмены запасов. и местоположение дб процесса с использованием транзакции. Но у меня есть проблемы с производительностью. Потому что у меня такой продукт. И я не знаю, где я должен начать сеанс startTransaction. С какого dataAccess я должен начать?
async moveProduct(products,fromLocation, toLocation){
const {
locationDataAccess,
stockDataAccess,
logServiceCaller,
} = this;
const productStock = await stockDataAccess.updateStock(fromLocation, toLocation, products);
const promises = [];
products.map(product => (
promises.push(locationDataAccess.decreaseQuantity(productId = product._id, fromLocation, count = product.count )),
promises.push(locationDataAccess.increaseLocation(productId = product._id, toLocation, count = product.count))
));
const result = await Promise.all(promises);
await logServiceCaller.addProductMove(products, fromLocation, toLocation );
return result;
}