2016-10-18 2 views
1
春の統合XMLのDSLで

は、JMSメッセージドリブンチャネルアダプタ用のトランザクションマネージャを指定する機能である:私の存在するトランザクションマネージャを追加する方法トランザクションマネージャの定義は

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

SI Java DSL

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

私は使用しないでくださいJms.channel(...) DSLコールここで私は私の出口フローを修正する必要があります。

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

Jms.messageDrivenChannelAdapter()AbstractMessageListenerContainer実装を受け入れ、あなたがJms.container()工場からトップレベルのビルダーを見るようにすることがあります:このように

答えて

1

UPDATE SI JavaのDSL 1.1.xについては

のような問題を回避するには、次のとおりです。DefaultMessageListenerContainer

  • のトップレベル@Beanそして、そのsetTransactionManager()
  • を使用

    1. 使用Jms.messageDrivenChannelAdapter(AbstractMessageListenerContainer)
    2. 設定
    +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

    他のスプリングのlibsを '4.3.4'などにアップグレードする必要があるため、' 1.2.0'バージョンへの単純なアップグレードではソリューションを使用できませんでしたアップグレードは私たちのコードに他の問題をもたらします。それで '1.1.2.RELEASE'に' transactionManager'を何とか指定することが可能ですか? –

    関連する問題