Spring Boot: JTA, смешивание XA и не-XA JMS соединений

При использовании JTA основной компонент JMS ConnectionFactory поддерживает XA и участвует в распределенных транзакциях. В некоторых ситуациях вам может потребоваться обработать определенные сообщения JMS с использованием не XA ConnectionFactory. Например, ваша логика обработки JMS может занять больше времени, чем таймаут XA.

Если вы хотите использовать не XA ConnectionFactory, вы можете внедрить bean-компонент nonXaJmsConnectionFactory вместо bean-компонента @Primary jmsConnectionFactory. Для согласованности bean-компонент jmsConnectionFactory также предоставляется с помощью псевдонима bean-компонента xaJmsConnectionFactory.

В следующем примере показано, как внедрить экземпляры ConnectionFactory:

// Внедрить primary (XA aware) ConnectionFactory
@Autowired
private ConnectionFactory defaultConnectionFactory;

// Внедрить XA aware ConnectionFactory 
// (использует псевдоним и вводит то же, что и выше)
@Autowired
@Qualifier("xaJmsConnectionFactory")
private ConnectionFactory xaConnectionFactory;

// Внедрить non-XA aware ConnectionFactory
@Autowired
@Qualifier("nonXaJmsConnectionFactory")
private ConnectionFactory nonXaConnectionFactory;

Поддержка альтернативного встроенного менеджера транзакций

Интерфейсы XAConnectionFactoryWrapper и XADataSourceWrapper могут использоваться для поддержки альтернативных встроенных менеджеров транзакций. Интерфейсы отвечают за упаковку bean-компонентов XAConnectionFactory и XADataSource и выставляют их как обычные bean-объекты ConnectionFactory и DataSource, которые прозрачно регистрируются в распределенной транзакции. Автоматическая конфигурация DataSource и JMS использует варианты JTA, при условии, что у вас есть bean-компонент JtaTransactionManager и соответствующие bean-компоненты XA-оболочки, зарегистрированные в вашем ApplicationContext.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки