В последнее время я изучаю JMS API, и я не уверен, что понимаю различия между локальными и диспетчерами транзакций.JMS Локальные транзакции против TransactionManager
Сценарий 1:
Потребляйте сообщение от JMS брокера, обработать сообщение и совершать сделки, как только обработка завершается успешно в противном случае отката.
Сценарий 2:
Я хочу прокси-сообщения от одного брокера к другому брокеру, но я не хочу использовать XA транзакцию из-за его медленным характер. Таким образом, идея заключается в том, чтобы начать транзакцию для брокера, с которого я поглощаю, а затем в рамках этой транзакции запускает вторую транзакцию для брокера, который я производю, и затем совершу две транзакции подряд. Давайте проигнорируем проблему риска дублирования в этом сценарии, которая может быть уменьшена
В чем же разница между использованием API JMS commit(), rollback() (локальных транзакций Aka) и использованием диспетчера транзакций, такого как Spring's Класс PlatformTransactionManager? Обязателен ли менеджер транзакций во втором сценарии и почему так/нет?
Как вы заявили, что «транзакции XA медленны по своей природе», мне может быть интересно, откуда вы взяли ваше заявление? – chalda
Из моего собственного опыта, сравнивающего транзакции Non-XA и XA. Отчитываясь о том, сколько еще нужно выполнить транзакцию XA, чтобы синхронизировать N ресурсов, я полагаю, что это является причиной разницы в производительности. – ByteFlinger
Спасибо за реакцию. Мой интерес вызвал ваш второй сценарий, поскольку у меня сложилось впечатление, что вы хотите имитировать транзакции XA без XA. Это означает, что вы не хотите использовать блокировку ресурсов? – chalda