2015-08-15 7 views
1

Я пытаюсь использовать Atomikos для распределенных транзакций в моем приложении загрузки весной. Он будет взаимодействовать с двумя базами данных.spring-boot-starter-jta-atomikos на практике

Я нашел номер example, в котором автор использует Atomicos. Начиная с версии 1.2 весенний ботинок supports Atomicos.

У меня есть несколько вопросов:

  1. Какая часть конфигурации example может быть удалено, если приложение имеет пружинно-загрузочный стартер-JTA,-atomikos зависимость?
  2. Что произойдет, если приложение выполнит операцию только с одной базой данных? то есть мне нужно что-то дополнительное, чтобы указать, какие транзакции должны быть распределены, а какие - локальные или они будут автоматически обнаружены? В этом случае я хочу избежать накладных расходов.

Спасибо!

ответ

3

Spring Boot автоматически настроит для вас JtaTransactionManager и привяжет его надлежащим образом к вашему диспетчеру сущности или слушателю сообщений JMS, если таковой имеется. Проверьте the documentation для получения более подробной информации. Безопасный способ запуска состоит в том, чтобы вообще не писать какую-либо конфигурацию и не видеть, что вам нужно настроить с помощью свойств или настраиваемой конфигурации.

Говоря об этом, Spring Boot не поддерживает автоматическую настройку нескольких баз данных. Если вы хотите настроить проект с двумя базами данных, вам придется сделать это самостоятельно; this sample project показывает, как вы можете сделать это с помощью JPA и локального менеджера транзакций. Вы можете легко перенести его в JTA с помощью Atomikos на примере, на который вы ссылались.

Вы не можете изменить менеджера транзакций во время выполнения (т. Е. На основании того, что в вашей потоке используется только одна база данных). Я предполагаю, что сам менеджер транзакций имеет оптимизацию для такого случая, а не полный 2PC, если это не обязательно.