Я работаю над приложением, которое отправляет сообщения JMS и требует семантики доставки только один раз, код прослушивателя сообщений может взаимодействовать с несколькими базами данных и самим отправлять дальнейшие сообщения, поэтому я использую транзакции XA. У меня есть сеть брокеров сообщений ActiveMQ, хранилище постоянных сообщений с поддержкой JDBC, и я использую Bitronix для управления транзакциями. В настоящее время повторная доставка осуществляется брокерами, а не потребителями.
Приложение имеет несколько источников данных, некоторые из которых поддерживаются XA, а другие не являются XA. При просмотре конфигурации я заметил, что набор JdbcPersistenceAdapter, установленный в службе брокера, использует не-xa версию источника данных. Мой инстинкт заключается в том, что эта конфигурация неверна и что адаптер персистентности должен использовать источник данных XA. Однако в настоящий момент все работает правильно с точки зрения отката / фиксации / повторной доставки сообщений в семантике транзакций.
Я пытаюсь убедиться, правильно ли я считаю, что мне нужно изменить источник данных наXA версия? Если я прав, думая, что это нужно изменить, мне также было бы интересно узнать, почему это работает правильно, хотя это, очевидно, менее важно, чем правильная конфигурация)?