Должен ли я использовать HornetQ JMS API для интеграции с Spring TransactionManager? - PullRequest
2 голосов
/ 04 октября 2011

У меня есть базовое сомнение относительно Транзакций и нативного API HornetQ.

Если мое приложение основано на Spring с управляемыми Spring транзакциями, как мне настроить HornetQ для участия в той же транзакции, управляемой Spring (АОП)?

Использование JMS API Я думаю, это довольно очевидно, поскольку Spring рассматривает ресурсы JMS как транзакционные.

Но я не знаю, как это сделать правильно с помощью API-интерфейса nativa.Может ли кто-нибудь пролить свет на эту проблему?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Не уверен, правильно ли я понимаю, но если вы пытаетесь просто выполнить декларативное управление транзакциями, используя Spring и аннотацию @Transactional для JUST JMS, тогда просто используйтеи затем - для "myTranactionManager" зарегистрируйте bean-компонент типа JmsTransactionManager, например,

@Bean public PlatformTransactionManager myTranactionManager (){ 
  return new JmsTransactionManager( this.connectionFactory());
} 

Теперь вы можете использовать аннотацию как обычно, и взаимодействия JMS будут заключены в транзакцию

@Transactional
public void doSomethingWithJms(){ 
  jmsTemplate.send(...);
  jmsTemplate.convertAndSend(...)
}

Если ваша цель - работать с НЕСКОЛЬКИМИ ресурсами, например, JMS и JDBC, вам необходимо использовать JTA.Чтобы узнать, как настроить JTA (для JPA и JMS), ознакомьтесь с этой записью в блоге http://blog.springsource.com/2011/08/15/configuring-spring-and-jta-without-full-java-ee/

1 голос
/ 04 октября 2011

HornetQ поддерживает XA в основном API, это всего лишь ресурсы.

Вы сможете подключить эти ресурсы в Spring, если он просто использует обычный API XA.1006 *

Я не уверен, как эта интеграция осуществляется в Spring.Если что-то не работает, его можно (и нужно) исправить или улучшить в модуле интеграции пружин.

...