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.
Читайте также:
- Spring Boot: распределенные транзакции с JTA, Atomikos
- Spring Boot: JTA, Bitronix, Java EE
- Spring Boot: вызов REST сервисов с помощью RestTemplate
Комментарии
Отправить комментарий