2016-06-13 4 views
1

У меня есть конфигурация SI, состоящая из нескольких источников данных. Скажи: DataSource A - Подключение к Oracle DataSource B - Подключение к DB2 DataSource C - Подключение к MySQLНесколько источников данных, несколько менеджеров транзакций. Какой из них используется?

Один из SI субпотоков пишет двум из этих источников данных, и я хотел бы сделать это в 1-ПК.

Так я определяю ChainedTransactionManager с DataSource А и DataSource В. Давайте назовем это chainedTransactionMgr

У меня также есть два JDBC шаблоны templateA (с A, как это источник данных) и templateB (с B, как это DataSource)

Предположим, что у меня есть поток, где я отправляю сообщение каналу публикации-подписки с двумя получателями, которые являются активаторами службы, которые просто используют templateA и templateB для записи msg в соответствующий источник данных. Будет ли задействован цепной менеджер транзакций в этом потоке?

ответ

1

Все, что вы говорите, хорошо и правильно.

Только проблема в том, что вы должны выполнять всю работу в одном потоке, потому что это только способ привлечения нескольких ресурсов к одной транзакции. На самом деле это случай, когда вы используете publish-subscribe-channel с конфигурацией по умолчанию, где в том же потоке первый абонент будет называть его templateA; и только после этого вторая услуга будет называть ее templateB.

Таким образом, ChainedTransactionManager также должен быть настроен с этим заказом.

И отсюда даже не имеет значения, используете ли вы менеджер транзакций XA. Главное - одной нитью.

+0

Нужно ли мне вставлять цепочку управления транзакциями где угодно? У меня есть подпоток, который представляет собой пару вызовов активатора службы, которые записываются в БД. Они работают в одном потоке, и порядок, в котором они вызывают БД, - это тот же порядок, в котором у ChainedTransactionManager есть ресурсы, но менеджер транзакций не используется. Мне нужно явно начать транзакцию? – neesh

+0

Конечно, вам нужно запустить TX. Пожалуйста, прочитайте Справочное руководство по этому вопросу для возможных мест для запуска TX: http://docs.spring.io/spring-integration/reference/html/transactions.html –

Смежные вопросы