Настройка поддержки транзакций Spring для MongoDB - PullRequest
0 голосов
/ 15 апреля 2020

Я использую spring-boot-starter-data-mongodb:2.2.1.RELEASE и пытаюсь добавить поддержку транзакций для операций с БД go.

У меня есть служба учетных записей ниже, где документы вставляются в две коллекции accounts и profiles , Если при вставке в коллекцию profile происходит ошибка, вставка в accounts должна выполнить откат. Я настроил транзакции Spring, используя MongoTransactionManager.

@Service
public class AccountService {

  @Transactional
  public void register(UserAccount userAccount) {
    userAccount = accountRepository.save(userAccount);
    UserProfile userProfile = new UserProfile(userAccountDoc.getId());
    userProfile = profileRepository.save(userProfile);
  }
}

Включена поддержка транзакций Spring для MongoDB.

@Configuration
public abstract class MongoConfig extends AbstractMongoConfiguration {

  @Bean
  MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
      return new MongoTransactionManager(dbFactory);
  }
}

В соответствии со ссылкой на Spring выполните c https://docs.spring.io/spring-data/mongodb/docs/2.2.1.RELEASE/reference/html/#mongo .transactions , все, что требуется для включения транзакций для MongoDB. Но это не работает. Вставки в коллекцию accounts не отменяются в случае возникновения ошибки при вставке в коллекцию profiles. Любые предложения, если я что-то упустил?

1 Ответ

0 голосов
/ 20 апреля 2020

Я бы использовал мониторинг команд или просмотр журналов запросов на стороне сервера, чтобы убедиться, что:

  • идентификаторы сеанса отправляются с командами запросов / записи
  • выполняются операции транзакции (там не является командой startTransaction, но есть commitTransaction)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...