2016-10-18 2 views
1

В Spring Integration XML DSL является возможность указать менеджер транзакций для JMS, управляемого сообщениями канала адаптера:Transaction менеджер определение Spring Integration JMS конечной

<int-jms:message-driven-channel-adapter id="..." 
     connection-factory="..." destination="..." 
     channel="..." error-channel="errorChannel" 
     transaction-manager="processTransactionManager" auto-startup="false"/> 

Как добавить менеджер транзакций в мой EXIST SI Java DSL

Jms.messageDrivenChannelAdapter(...) 
       .destination(...) 
       .outputChannel(...) 
       .errorChannel(errorChannel) 
       .autoStartup(false) 
       .get(); 

Я бы не стал использовать Jms.channel(...) DSL call here Потому что мне нужно переработать мой поток выхода.

ответ

1

Как это:

Jms.messageDrivenChannelAdapter(
     Jms.container(this.jmsConnectionFactory, ...) 
      .transactionManager(...) 
      .get()) 

Существует Jms.messageDrivenChannelAdapter() принять AbstractMessageListenerContainer реализации и, как вы видите на высшем уровне строитель из Jms.container() завода.

UPDATE

Для SI Java DSL 1.1.x обходной путь, как:

  1. Использование Jms.messageDrivenChannelAdapter(AbstractMessageListenerContainer)
  2. Настройка верхнего уровня @Bean для DefaultMessageListenerContainer
  3. И использовать его setTransactionManager()
+0

Спасибо, но в моей версии SI '1.1.2.RELEASE' нет метода' transactionManager'. Какую версию я должен использовать? –

+0

Ну, спасибо, вы можете 'JmsListenerContainerSpec.get()' и вызвать 'setTransactionManager()'. Подумайте об обновлении до '1.2': https://spring.io/blog/2016/10/14/java-dsl-for-spring-integration-1-2-release-is-available. (вы не упомянули версию в своем вопросе ...) –

+0

Я не мог использовать это решение с простым обновлением до версии 1.2.0, потому что он требует обновления других библиотек Springs до '4.3.4' и таких обновление приносит нам другие проблемы в нашем коде. Так можно как-то указать 'transactionManager' в' 1.1.2.RELEASE'? –

Смежные вопросы