Как реализовать транзакцию mon goose на многоуровневой архитектуре микросервиса? - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу использовать транзакцию 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...