Spring Boot: распределенные транзакции с JTA, Atomikos

Распределенные транзакции с JTA

Spring Boot поддерживает распределенные транзакции JTA по нескольким XA ресурсам с помощью встроенного менеджера транзакций Atomikos или Bitronix. Транзакции JTA также поддерживаются при развертывании на подходящий сервер приложений Java EE.

При обнаружении среды JTA для управления транзакциями используется Spring JtaTransactionManager. Автоматически настроенные компоненты JMS, DataSource и JPA обновляются для поддержки XA транзакций. Вы можете использовать стандартные идиомы Spring, такие как @Transactional, для участия в распределенной транзакции. Если вы находитесь в среде JTA и по-прежнему хотите использовать локальные транзакции, вы можете установить для свойства spring.jta.enabled значение false, чтобы отключить автоматическую настройку JTA.

Использование менеджера транзакций Atomikos

Atomikos - это популярный менеджер транзакций с открытым исходным кодом, который можно встроить в приложение Spring Boot. Вы можете использовать стартер spring-boot-starter-jta-atomikos для загрузки соответствующих библиотек Atomikos. Spring Boot автоматически настраивает Atomikos и обеспечивает применение соответствующих зависимых настроек к бинам Spring для правильного запуска и порядка завершения работы.

По умолчанию журналы транзакций Atomikos записываются в каталог журналов транзакций в домашнем каталоге вашего приложения (каталог, в котором находится файл jar приложения). Вы можете настроить местоположение этого каталога, установив свойство spring.jta.log-dir в файле application.properties. Свойства, начинающиеся с spring.jta.atomikos.properties, также можно использовать для настройки Atomikos UserTransactionServiceImp.

Чтобы несколько менеджеров транзакций могли безопасно координировать одни и те же менеджеры ресурсов, каждый экземпляр Atomikos должен быть настроен с уникальным идентификатором. По умолчанию этот идентификатор является IP-адресом компьютера, на котором работает Atomikos. Чтобы обеспечить уникальность в производственной среде, вы должны сконфигурировать свойство spring.jta.transaction-manager-id с разными значениями для каждого экземпляра вашего приложения.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки