2016-02-16 4 views
0

В моей Spring загрузки приложения У меня есть следующий сценарий:Нужна ли мне транзакция XA? DefaultMessageListenerContainer локальная транзакция против XA Factory Connection

  1. чтения сообщения из очереди JMS
  2. ли какие-то вещи с данными.
  3. Выполните JDBC вставки в базу данных Oracle

Если на любом этапе происходит исключение, я хотел бы, чтобы убедиться, что сообщение не теряется и помещается в очередь отката.

Нужна ли мне транзакция XA между фабрикой JMS с поддержкой XA и драйвером Oracle db с поддержкой XA? Или достаточно использовать, например, DefaultMessageListenerContainer с sessionTransacted флаг установлен на true?

И если второй правильный ответ, что было бы хорошей ситуацией для использования транзакции XA?

ответ

1

Вы можете избежать XA с помощью Spring, чтобы синхронизировать две транзакции и кодировать ваше приложение, чтобы обрабатывать (небольшую) возможность дублирования доставки (когда БД совершает, но JMS откатывается из-за, например, потерянного соединения между БД и JMS совершают). Я предлагаю вам прочитать отличный Distributed transactions in Spring, with and without XA от Дейва Сиера из команды Spring.

Если javaworld перемещает эту ссылку где-то в будущем, google syer xa spring и вы должны ее найти.

+0

Большое спасибо за ссылку! –

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