Реализация PlatformTransactionManager - PullRequest
0 голосов
/ 20 марта 2020

Предположим, у меня есть какая-то сторонняя библиотека, и я хочу интегрировать ее со Spring, чтобы иметь возможность использовать ее как часть транзакции Spring. Я не нашел соответствующей информации о Inte rnet и посмотрел исходный код интеграции библиотек RabbitMQ и MyBatis. Как я понял из их исходного кода, я должен реализовать org.springframework.transaction.PlatformTransactionManager и взаимодействовать с TransactionSynchronizationManager. И есть два вопроса:

  1. Каким образом Spring «узнает» и реализует реализации PlatformTransactionManager?
  2. Предположим, что в транзакции использовались два ресурса через RabbitTemplate и JdbcTemplate. Что будет первым зафиксировано - изменения в базе данных или отправленные сообщения?

Кроме того, я был бы очень признателен, если бы кто-нибудь указал мне на какое-нибудь руководство или книгу о взаимодействии с внутренними объектами Spring.

1 Ответ

0 голосов
/ 21 марта 2020
  1. Вы должны создавать их экземпляры самостоятельно, например DataSourceTransactionManager или HibernateTransactionManager. Spring Boot сделает это за вас, но с простым Spring вам нужно сделать это самостоятельно.
  2. То, что вы хотите, - это распределенные транзакции (XADataSource), которые невозможны в RabbitMQ.
  3. Для RabbitMQ вы должны сначала прочитать это здесь: https://www.rabbitmq.com/confirms.html. Затем убедитесь, что вы понимаете транзакции на стороне JDB C. Тогда вы можете рассуждать о том, как они оба работают вместе.
  4. Что касается стороны Java, вам может понравиться эта книга полностью об операциях: https://www.marcobehler.com/books/1-java-database-connections-transactions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...